DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: cuiqingbo
今日帖子: 18
在线用户: 10
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 bmsr (白忙剩人) ★☆☆☆☆ -
普通会员
2016/7/26 17:47:20
标题:
求助:delphi 10.1 TNetHTTPClient 的post方法失败 浏览:2839
加入我的收藏
楼主: 以下这段代码,在delphi 10下是没有问题的, 但在10.1下就得不到正确结果了,还没时间比较向网站发送的数据那里不同(因为这需要花很多精力的).是否新版本需要什么新的设置,或需要打什么补丁?望知道的高手告知,万分感谢.
Function TForm_Main.Login: boolean;
var
  sts: TStringlist;
   Aurl: string;
  ms: TMemoryStream;
  rbs: RawByteString;
  Response: IHTTPResponse;
  s: string;
  R_err: HRT_ErrInfo;
begin
  Result := False;
  try
    sts := TStringlist.Create;
    ms := TMemoryStream.Create;

    try

      if Trim(Edit_UserName.Text) = '' then
        begin
          Memo1.Lines.Add('错误:用户名不能为空.');
          exit;
        end;
      if Trim(Edit_PassWord.Text) = '' then
        begin
          Memo1.Lines.Add('错误:密码不能为空.');
          exit;
        end;
      if Trim(Edit_JiaoYan.Text) = '' then
        begin
          Memo1.Lines.Add('错误:校验码不能为空.');
          exit;
        end;

      Aurl := 'https://www.xxx.com/dologin';
      sts.Clear;

      sts.AddPair('username', Trim(Edit_UserName.Text));
      sts.AddPair('password', Trim(Edit_PassWord.Text));
      sts.AddPair('vcode', Trim(Edit_JiaoYan.Text));
      Memo1.Lines.Clear;
      Memo1.Lines.Add(sts.Text);
      Response := NetHTTPClient_Main.Post(Aurl, sts, ms);
      {这里跟踪下去最后向网站发送的都是空的数据}
      ms.Position := 0;
      SetLength(rbs, ms.Size);
      ms.Read(rbs[1], ms.Size);
      s := UTF8ToString(rbs);

      R_err.LoadFromStr(s);
      Memo1.Lines.Add(format('code:%d,信息:%s', [R_err.code, R_err.msg]));
      if R_err.code = 0 then
        begin
          Memo1.Lines.Add('登录成功');
          FLogined := True;
        end
      else
        begin
          Memo1.Lines.Add('登录失败');
          FLogined := False;
        end;

    finally
      sts.Free;
      ms.Free;
    end;
  except
    on E: Exception do Memo1.Lines.Add('登录失败:' + E.Message);
  end;
----------------------------------------------
http://blog.sina.com.cn/bmsrnote
作者:
男 bmsr (白忙剩人) ★☆☆☆☆ -
普通会员
2016/7/27 1:37:36
1楼: 基本上可以确认是10.1的问题了。
周末有空做进一步测试跟踪,看看究竟错在那里?
还有10.1的异步方式感觉多此一举,自己在线程里控制效率明显更高的多。
----------------------------------------------
http://blog.sina.com.cn/bmsrnote
作者:
男 mprjcf (mprjcf) ★☆☆☆☆ -
普通会员
2016/7/27 9:35:33
2楼: TnetHttpClient在windows下注意自己手动处理cookie值后,没有任何问题;只不过在IOS平台下访问具有重定向的URL时有问题。已提QC了。
----------------------------------------------
他们总是取笑失败者,以酷似智者;他们也总是为成功者喝采,以取得赏金。
作者:
男 mprjcf (mprjcf) ★☆☆☆☆ -
普通会员
2016/7/27 9:39:29
3楼:       sts.AddPair('username', Trim(Edit_UserName.Text));
      sts.AddPair('password', Trim(Edit_PassWord.Text));
      sts.AddPair('vcode', Trim(Edit_JiaoYan.Text));

我一般写成
      sts.Add(format('username=%s', [Trim(Edit_UserName.Text)]);
----------------------------------------------
他们总是取笑失败者,以酷似智者;他们也总是为成功者喝采,以取得赏金。
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行70.3125毫秒 RSS