2014-09-25 185 views
1

我是德爾福的新手。爲了與WebService進行通信,我添加了兩個組件,分別爲SSL(https)的TIdHTTP和TIdSSLIOHandlerSocketOpenSSL。從服務器獲得響應時,它不起作用,並返回「Socket Error#10060'#$ D#$ A'Connection超時。」我該怎麼辦?下面是我的代碼。

procedure TForm1.btnRequestClick(Sender: TObject); 
var 
    s: string; 
    lHTTP: TIdHTTP; 
    lIOHandler: TIdSSLIOHandlerSocketOpenSSL; 

begin 
    lHTTP := TIdHTTP.Create(nil); 
    lIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); 
    try 
    lHTTP.IOHandler := lIOHandler; 
    lHTTP.HandleRedirects := True; 
    s := lHTTP.Get('https://esta.cbp.dhs.gov/esta/'); 
    Memo.Text := s; 
    finally 
    lHTTP.Free; 
    lIOHandler.Free; 
    end; 
end; 

在此先感謝。

回答

0

您顯示的代碼在最新版本的Indy中試用時效果不錯。如預期的那樣,返回的String包含網站的HTML。

默認情況下,Indy使用其ConnectTimeoutReadTimeout屬性的無限超時,因此獲取該錯誤的唯一方法是在嘗試連接到服務器時操作系統本身超時。確保您的機器的網絡路線達到esta.cbp.dhs.gov。你可以在網頁瀏覽器中加載網址嗎?

+0

是的!我可以連接網址,我將檢查公司的網絡政策或其他內容。如果是網絡問題,我檢查什麼樣的東西? – 2014-09-25 04:19:37

+1

如果網絡瀏覽器可以連接到該網站,則TIdHTTP也不應該無法連接。 – 2014-09-25 14:35:05

0

我有同樣的信息。我有indy_OpenSSL096m.zip的Indy-10.1.5和Delphi-7,Win-7x64和SSL dll。我的問題是當我使用一些非常慢的網站時。這些網站甚至在Google Ghrome中有時不起作用,它說「此網頁不可用」 - 相反。其他網站正常工作。