2016-12-28 101 views
0

fphttpclient用簡單的例子像在fphttpclient中處理錯誤?

procedure ReadFromURL(theURL: string); 
var 
    httpClient: TFPHTTPClient; 
    FileContents: String; 
    theStatusCode: integer; 
begin 
    httpClient := TFPHTTPClient.Create(nil); 
    try 
    FileContents := httpClient.Get(theURL); 
    theStatusCode := httpClient.ResponseStatusCode; 
    if theStatusCode = 200 then 
    begin 
     ; // do something 
    end 
    else 
    ShowMessage(IntToStr(theStatusCode)); 
    finally 
    httpClient.Free; 
    end; 
end; 

但只,如果URL存在,使狀態代碼爲200。在其他情況下的代碼崩潰在httpClient.Get與異常工作正常類EHTTPClient,ESocketError或EXC_BAD_ACCESS,雖然程序使用嘗試...終於節(制定它作爲嘗試...除了不改變任何東西)。不幸的是,在可以處理狀態碼之前引發異常。

推薦使用fphttpclient處理錯誤的方法是什麼?在調用方法之前,是否有任何方法檢查資源是否存在(也可能是URL的正確性)?

回答

1

確保各種事件被分配,從而使這類知道什麼密碼提示做,重定向等

標準實例初始化類像

With TFPHTTPClient.Create(Nil) do 
    try 
    AllowRedirect:=True; 
    OnRedirect:[email protected]; 
    OnPassword:[email protected]; 
    OnDataReceived:[email protected]; 
    OnHeaders:[email protected]; 
    { Set this if you want to try a proxy. 
    Proxy.Host:='ahostname.net.domain'; 
    Proxy.Port:=80; 

請研究例子,並嘗試對您的問題進行排序,直到您擁有可重複的案例。如果仍有問題,請將其提交給錯誤追蹤程序

在極少數情況下,使用HEAD()檢查標頭的存在可以加速例如篩選舊網址列表

+0

謝謝,您的回覆有助於解決我的問題。 – jwdietrich