您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Delphi >> Delphi7 TIdHTTP控件post发送请求返回结果延时问题,求解决。。。

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

来源:网络整理     时间:2017/12/28 11:06:57     关键词:

关于网友提出的“ 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发送请求返回结果延时问题,求解决。。。 Delphi7 TIdHTTP控件post发送请求返回结果延时问题,求解决。。。 Delphi7 TIdHTTP控件post发送请求返回结果延时问题,求解决。。。


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

相关图片

相关文章