之前一直用Delphi 7 + ICS V7 来做一些HTTPS的访问。今天测试了一下Delphi XE + ICS V7,发现有问题,无论怎么测试,总是提示 #10060的错误,查了一下原因是“连接超时”,但是浏览器或者Delphi 7都没有问题。请教各位,是什么原因造成的?代码如下unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OverbyteIcsWndControl, OverbyteIcsHttpProt,
OverbyteIcsWSocket;type
TForm1 = class(TForm)
SslContext1: TSslContext;
SslHttpCli1: TSslHttpCli;
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure SslHttpCli1RequestDone(Sender: TObject; RqType: THttpRequest;
ErrCode: Word);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Clear;
SslHttpCli1.URL := 'https://www.guardiananytime.com/';
SslHttpCli1.GetASync;end;procedure TForm1.SslHttpCli1RequestDone(Sender: TObject; RqType: THttpRequest;
ErrCode: Word);
var
Data : String;
begin
SslHttpCli1.SendStream.Free;
SslHttpCli1.SendStream := nil; if ErrCode <> 0 then
begin
Memo1.Lines.Add('Failed with error #' + IntToStr(ErrCode));
SslHttpCli1.RcvdStream.Free;
SslHttpCli1.RcvdStream := nil;
end; if sslHttpCli1.StatusCode <> 200 then
begin
Memo1.Lines.Add('Failed with error: ' + IntToStr(SslHttpCli1.StatusCode) +
' ' + SslHttpCli1.ReasonPhrase);
sslHttpCli1.RcvdStream.Free;
sslHttpCli1.RcvdStream := nil;
Exit;
end;
Memo1.Lines.Add('OK. Response was:');
sslHttpCli1.RcvdStream.Seek(0, 0);
SetLength(Data, sslHttpCli1.RcvdStream.Size);
sslHttpCli1.RcvdStream.Read(Data[1], Length(Data));
Memo1.Lines.Add(String(Data));
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OverbyteIcsWndControl, OverbyteIcsHttpProt,
OverbyteIcsWSocket;type
TForm1 = class(TForm)
SslContext1: TSslContext;
SslHttpCli1: TSslHttpCli;
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure SslHttpCli1RequestDone(Sender: TObject; RqType: THttpRequest;
ErrCode: Word);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Clear;
SslHttpCli1.URL := 'https://www.guardiananytime.com/';
SslHttpCli1.GetASync;end;procedure TForm1.SslHttpCli1RequestDone(Sender: TObject; RqType: THttpRequest;
ErrCode: Word);
var
Data : String;
begin
SslHttpCli1.SendStream.Free;
SslHttpCli1.SendStream := nil; if ErrCode <> 0 then
begin
Memo1.Lines.Add('Failed with error #' + IntToStr(ErrCode));
SslHttpCli1.RcvdStream.Free;
SslHttpCli1.RcvdStream := nil;
end; if sslHttpCli1.StatusCode <> 200 then
begin
Memo1.Lines.Add('Failed with error: ' + IntToStr(SslHttpCli1.StatusCode) +
' ' + SslHttpCli1.ReasonPhrase);
sslHttpCli1.RcvdStream.Free;
sslHttpCli1.RcvdStream := nil;
Exit;
end;
Memo1.Lines.Add('OK. Response was:');
sslHttpCli1.RcvdStream.Seek(0, 0);
SetLength(Data, sslHttpCli1.RcvdStream.Size);
sslHttpCli1.RcvdStream.Read(Data[1], Length(Data));
Memo1.Lines.Add(String(Data));
end;end.
解决方案 »
- delphi调用cmd执行一连串指令问题
- 请教有关Delphi QuickReport的问题
- 【各位老大,C++定义如何转化成PASCAL定义。200分】
- 大家能否给我一些建议。让我少走些弯路呢?
- 新手提问:有关TIMER的问题
- 某表,一条记录有30多个字段,QuickReport中,选用A4纸,一页打不下一条记录怎么办,请高手出招!!!!
- 如何在MDI窗体里,利用右上角的叉(窗体关闭)平滑隐藏MDI子窗体
- 应用服务器分发问题?
- 在delphi下,如何按下一个按扭,让其弹出一个窗体?
- 窗口显示,退出出错问题(作过系统的前辈应该没问题的)
- Query1 : Parameter 'a' not found
- delphi7或2010本身的界面字体太小,怎么修改
检查一下,它到底想连哪个ip和端口
或者
写个普通的tcp连接,看看有没有问题
sslHttpCli1怎么设置