关于网友提出的“ Delphi7 TIdHTTP控件post发送请求返回结果延时问题,求解决。。。”问题疑问,本网通过在网上对“ Delphi7 TIdHTTP控件post发送请求返回结果延时问题,求解决。。。”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: Delphi7 TIdHTTP控件post发送请求返回结果延时问题,求解决。。。
描述:VCL组件TIdHTTP控件返回超时问题INDY组件
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组件的弊病。。。
我也是醉了。。。
有木有大神有最好、最有效的解决办法???
知道的大牛们请指导一下,小弟在此谢了


以上介绍了“ Delphi7 TIdHTTP控件post发送请求返回结果延时问题,求解决。。。”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4527648.html