我一直在阅读很多关于Delphi,POST命令和SSL的信息。
我的问题是:
我必须联系这个网站: https://payment.architrade.com/cgi-bin/confirmtransact.cgi
解释可以在这里找到: http://tech.dibspayment.com/D2/FlexWin/API/Status_functions/confirmtransactcgi
在Chrome或firefox中执行此操作会返回0.正如解释说的那样。
大约3年前,我做了一个实现来称呼它。 我是在Delphi 2010中制作的。
这已经运行了两年半没有瑕疵。 过去6个月我在打电话后几乎立即得到套接字错误#0 。 我发生的事情越来越多,今天它是不变的。
此时我们的客户无法使用此例程。
在我的程序中,我使用它:
HttpPosten: TIdHTTP;
IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
代码是这样的:
procedure TForm6.Button1Click(Sender: TObject);
var
FejlKode: String;
begin
Try
Memo1.Lines.Clear;
Memo1.Lines.Add('Starter på test...');
Memo2.Lines.Clear;
FejlKode := HttpPosten.Post('https://payment.architrade.com/cgi-bin/confirmtransact.cgi',Memo2.Lines);
HttpPosten.Disconnect;
Memo1.Lines.Add(' ');
Memo1.Lines.Add('Resultat:');
Memo1.Lines.Add(FejlKode);
Except
on E: exception do
Begin
FejlKode := e.Message;
Memo1.Lines.Add(' ');
Memo1.Lines.Add('FEJL (2):');
Memo1.Lines.Add(FejlKode);
End;
End;
end;
此刻我不断地在除了部分之外。
我需要建议在哪里照顾这个? 这是在Delphi,Indy,SSL,服务器,Internet,防火墙内还是在哪里?
有人说我应该将Indy升级到最新版本。 但它已经运行了这些组件两年半没有问题。 如果我uograde,我想知道,我现在有哪个版本。我在哪里可以找到这些信息?
所以 - 我真的需要一些建议。
问候迈克尔
答案 0 :(得分:1)
过去6个月,我打电话后几乎立即收到Socket Error#0。我发生的事情越来越多,今天它是不变的。
我无法使用最新版本的Indy(撰写本文时为10.6.2.5274)以及您显示的确切代码重现错误。 Post()
调用成功获得HTTP 200 OK
响应,正文有效负载为0
,就像您使用Chrome / Firefox一样。
HTTP/1.1 200 OK
Server: -
Date: Tue, 19 May 2015 17:05:35 GMT
Connection: close
X-Server-Name: payment27
Cache-Control: no-store, no-cache, must-revalidate, max-age=0
Pragma: no-cache
P3P: CP="NON DSP CURa CUSa OUR NOR STA"
Content-Type: text/plain
Connection: close
Strict-Transport-Security: max-age=31536000
0
有人说我应该将Indy升级到最新版本。但它已经使用这些组件运行了两年半没有问题。
在可行的情况下,您应该始终使用最新的。例如,很久以前就解决了套接字错误#0。
如果我uograde,我想知道,我现在有哪个版本。我在哪里可以找到这些信息?
您可以在设计时右键单击表单设计器中的任何Indy组件。或者在运行时读取任何Indy组件的Version
属性。
答案 1 :(得分:0)
我在尝试发布到 https 网站时也遇到了 DELPHI 2010 和 INDY 10.5.5 的这个错误。 我通过将 idHTTP1 组件的 hoKeepOrigProtocol 属性设置为 true 来解决它。然后“套接字错误 #0”再也没有回来。
我知道这是一个老话题,但在谷歌中可以看到。有些人仍在阅读。