IdSSLIOHandlerSocketOpenSSL Delphi套接字错误#0

时间:2015-05-19 12:54:46

标签: sockets delphi ssl

我一直在阅读很多关于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,我想知道,我现在有哪个版本。我在哪里可以找到这些信息?

所以 - 我真的需要一些建议。

问候迈克尔

2 个答案:

答案 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”再也没有回来。

我知道这是一个老话题,但在谷歌中可以看到。有些人仍在阅读。