DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: cqfighterli
今日帖子: 17
在线用户: 17
导航: 论坛 -> 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
----------------------------------------------
-
作者:
男 f605149940 (Danny) ▲▲▲▲△ -
普通会员
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);
这样对吗?
----------------------------------------------
-
作者:
男 f605149940 (Danny) ▲▲▲▲△ -
普通会员
2016/4/26 10:44:32
4楼: cookie方式:我是将IDHTTP定义为全局。登陆后cookie自动保存在idhttp中,比较省事。有个IDcookiemanager似乎也可以。
令牌方式:将令牌字段加到IdHTTP.Request.CustomHeaders.AddValue()
主要看你服务端是用什么来验证权限。
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行78.125毫秒 RSS