Delphi7 TIdHTTP控件post发送请求返回结果延时问题,求解决。。。

_xiaowugg_ 2017-04-26 06:08:54
procedure TfrmWxPays.PlaceAnOrder(strMoney:string);
var
ListStr, ParamStr: TStringList;
MD5: TMD5;
ResultXml, XmlResult, NonceStr,Start_Time: string;
pOpenSSL: TIdSSLIOHandlerSocket;
IdHTTP1 :TIdHTTP;
begin
pOpenSSL := TIdSSLIOHandlerSocket.Create(nil);
IdHTTP1 := TIdHTTP.Create(nil);
ListStr := TStringList.Create;
ParamStr := TStringList.Create;
MD5 := TMD5.Create;
try
NonceStr := GetRandomStr(NONCE_STR);
ListStr.Values['appid'] := g_Payment.g_WxAppid; // 公众账号
ListStr.Values['mch_id'] := g_Payment.g_WxAccout; // 商户号
ListStr.Values['nonce_str'] := NonceStr;
ListStr.Values['device_info'] := 'DONE0001';
ListStr.Values['body'] := 'D.one-停车缴费'; // 商品描述
ListStr.Values['out_trade_no'] := 'DONE'+FormatDateTime('yyyymmddhhmmss',Now); // 商户订单号
ListStr.Values['total_fee'] := strMoney; // 总金额
ListStr.Values['spbill_create_ip'] := Trim(IdIPWatch1.LocalIP); // 终端IP
ListStr.Values['notify_url'] := URL_NOTIFY; //回调URL
ListStr.Values['time_start'] := FormatDateTime('yyyymmddhhmmss',Now);
ListStr.Values['trade_type'] := 'NATIVE';
ListStr.Values['product_id'] := 'PARKPAY'+FormatDateTime('yyyymmddhhmmss',Now);
ListStr.Sort;
ListStr.Values['key'] := g_Payment.g_WxKey; // 换成自己 KEY

ParamStr.Values['appid'] := g_Payment.g_WxAppid;
ParamStr.Values['mch_id'] := g_Payment.g_WxAccout;
ParamStr.Values['nonce_str'] := NonceStr;
ParamStr.Values['device_info'] := 'DONE0001';
ParamStr.Values['body'] := 'D.one-停车缴费'; // 商品描述
ParamStr.Values['out_trade_no'] := ListStr.Values['out_trade_no']; // 商户订单号
trade_no := ListStr.Values['out_trade_no'];
ParamStr.Values['time_start'] := ListStr.Values['time_start'];
ParamStr.Values['total_fee'] := strMoney; // 总金额
ParamStr.Values['spbill_create_ip'] := Trim(IdIPWatch1.LocalIP); // 终端IP
ParamStr.Values['notify_url'] := URL_NOTIFY; //回调URL
ParamStr.Values['trade_type'] := 'NATIVE';
ParamStr.Values['product_id'] := ListStr.Values['product_id'];
prepay_id := ListStr.Values['product_id'];
ParamStr.Values['sign'] := UpperCase(MD5.StrToMD5(AnsiToUtf8(GetStringList(ListStr))));
XmlResult := GetStringListToXml(ParamStr);
ParamStr.Clear;
ParamStr.Text :=AnsiToUtf8(XmlResult);
IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
pOpenSSL.SSLOptions.Method := sslvSSLv23;
IdHTTP1.IOHandler := pOpenSSL;
ResultXml := Utf8ToAnsi(IdHTTP1.Post(URL_UNIFIEDORDER, ParamStr));<---------------------------------出现问题的地方
DealPayResultXml(ResultXml);
finally
MD5.Free;
ParamStr.Free;
ListStr.Free;
pOpenSSL.Free;
IdHTTP1.Free;
end;
end;

之前在demo上返回时<=1-2s 正式搬入项目软件中 延时时间实在是太长了10多秒,实在是不能接受,但是能返回成功数据。
不是很明白,百度很多资料都说设置超时等待时间:
IdFTP1.ReadTimeout:=3000;
IdFTP1.ConnectTimeout:=3000;

发post提交数据,放在线程里执行。。。
google翻墙找了好久还是没找到解决办法。有人说这是INDY组件的弊病。。。
我也是醉了。。。
有木有大神有最好、最有效的解决办法???
知道的大牛们请指导一下,小弟在此谢了
...全文
2359 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
power549742897 2018-02-05
  • 打赏
  • 举报
回复
放入线程里,当最新请求的时候,要终止先前的请求
缘中人 2017-09-08
  • 打赏
  • 举报
回复
微信支付返回总是不正确
zhujinqiang 2017-05-09
  • 打赏
  • 举报
回复
还没解决好吗? 正式环境的网络正常吗?
_xiaowugg_ 2017-04-27
  • 打赏
  • 举报
回复
Some people?
santiaodahan 2017-04-27
  • 打赏
  • 举报
回复
有可以post的web页吗?如果有,测试一下页面提交反馈时间是否正常。用个抓包工具比如Wireshark对比一下页面提交和idhttp提交参数有何区别。
_xiaowugg_ 2017-04-27
  • 打赏
  • 举报
回复

5,390

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧