|
|
导航: |
论坛 -> Web应用开发
斑竹:bodies |
|
作者: |
for (sdfsdf) |
★☆☆☆☆ |
-
|
普通会员 |
|
2016/4/25 16:20:43 |
标题: |
急救:关于IdHTTP调用POST登录方法后,在调用保存单据方法后出错,报http1.1/ 401错误 |
浏览:1777 |
|
加入我的收藏 |
楼主: |
代码如下 IdHTTP1:=Tidhttp.create(nil); IdHTTP1.Request.Method:='POST'; IdHTTP1.Request.ContentType:= 'application/json'; IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; QQDownload 714)'; jsonToSend := TStringStream.Create('{"provider":"credentials","UserName":"Administrator","Password":"888888","PasswordIsEncrypted":false,"RememberMe":false}');//创建一个包含JSON数据的变量 jsonToSend.Position := 0;//将流位置置为0 Paramstr := IdHTTP1.Post('http://192.168.10.224/shop/json/syncreply/Auth', jsonToSend);//登录方法 vJson := SO(Paramstr); if vJson['IsSuccess'].AsBoolean then//如果登录成功 begin
Response:=''; Response:='{"Creator":"user","NeedUpDateFields":["FID","FBillNo","Fmendian","FDate","F_Sl_Amount","F_Sl_contact","FDocumentStatus","FModifyDate","Sl_order__FEntity","Fmaterialid","FUnitID","FQty","FPrice","FAmount","FfhDate","Fpsdd","FNote"],"Model":{"FID":100032,'; Response:= Response+'"FDocumentStatus":"A","Fmendian":{"FNUMBER":"CUST0017"},"FDate":"2015-05-26","Sl_order__FEntity":[{"FEntryID": "100047","Fmaterialid":{"FNUMBER":"1220013"},"FAmount": "15450","FQty": "150.0000000000","FPrice": "103.0000000000","FNote": "af"}' ; Response:= Response+'"FEntryID": "100056","Fmaterialid":{"FNUMBER":"1220018"},"FAmount": "64","FQty": "8.0000000000","FPrice": "8.0000000000","FNote": " "},{"FEntryID": "100057","Fmaterialid":{"FNUMBER":"1220012"},"FAmount": "2736","FQty": "48.0000000000","FPrice"'; Response:= Response+': "57.0000000000","FNote": "a"}]}}'; jsonToSend := TStringStream.Create(Response); jsonToSend.Position := 0;//将流位置置为0
memo1.Lines.Text := IdHTTP1.post('http://192.168.10.224/shop/json/syncreply/Sl_order_Save', jsonToSend);//这里失败了提示:http1.1/ 401错误,好像说没有授权。 end;
请高手帮帮我啊,急啊,有偿请教。
----------------------------------------------
- |
作者: |
for (sdfsdf) |
★☆☆☆☆ |
-
|
普通会员 |
|
2016/4/25 16:24:43 |
1楼: |
急等,知道的高手请加我qq:902467
----------------------------------------------
-
|
作者: |
|
2016/4/25 16:45:03 |
2楼: |
你要把登陆的cookie或令牌带上吧
----------------------------------------------
-
|
作者: |
for (sdfsdf) |
★☆☆☆☆ |
-
|
普通会员 |
|
2016/4/25 19:26:58 |
3楼: |
f605149940 cookie或令牌带上吧怎么带啊,我赋值COOKIE信息始终是空的 for i:=0 to i-1 do gCookie:=gCookie+IdHTTP1.CookieManager.CookieCollection.Items[i].CookieText; memo1.Lines.Text :=gCookie; IdHTTP1.Request.RawHeaders.Add('cookie: ' + gCookie); 这样对吗?
----------------------------------------------
-
|
作者: |
|
2016/4/26 10:44:32 |
4楼: |
cookie方式:我是将IDHTTP定义为全局。登陆后cookie自动保存在idhttp中,比较省事。有个IDcookiemanager似乎也可以。 令牌方式:将令牌字段加到IdHTTP.Request.CustomHeaders.AddValue() 主要看你服务端是用什么来验证权限。
----------------------------------------------
-
|
|