2014-11-23 101 views
0

我試圖實現從網頁使用idhtp1.GET 當我要做的就是返回一些數據:idHTTP返回錯誤

sGeo := RemoveWhiteSpace('http://www.robin-william.net/Osiris/geo.php?ip=IPHERE'); 
redt1.Lines.Add(idhtpGeo.Get(sGeo)); 

它完美,但一旦我做這個:

sGeo := RemoveWhiteSpace('http://www.robin-william.net/Osiris/geo.php?ip=' + sData); 

(增加sData)它給我錯誤DOCTYPE html。

image

這裏是源的一部分:

procedure TfrmMap.GetGeo(sData : string); 
begin 
    try 
    idhtpGeo.ConnectTimeout := 5000; 
    idhtpGeo.HandleRedirects := True; 
    sGeo := RemoveWhiteSpace('http://www.robin-william.net/Osiris/geo.php?ip=' + sData); 
    redt1.Lines.Add(sGeo); 
    redt1.Lines.Add(idhtpGeo.Get(sGeo)); 
    except 
    MessageDlg('Failed to load Geo Data!', mtError, [mbOK], 0); 
    end; 
end; 

SDATA僅僅是IP。我也嘗試使用SynaCode單元來編碼URL(sGeo),並沒有給我任何錯誤,但返回的數據不正確。

編碼的URL看起來如下:

http://www.robin-william.net/Osiris/geo.php?ip=88.106.170.45%0A 

任何幫助將不勝感激。

+0

您使用的是什麼版本的Indy?我無法使用最新的Indy 10 SVN快照重現問題。即使IP參數格式不正確,Get()也會成功返回。即使錯誤確實發生,「<!DOCTYPE html>」不應該出現在異常的Message屬性中(調試器通知顯示),它應該在異常的'ErrorMessage'屬性中(而調試器通知不顯示)。 – 2014-11-24 00:17:00

+0

如果我沒有錯誤使用indy即時通訊7.但不是100%確定。 是的,它顯示的信息是奇怪的,我試着谷歌它,但沒有結果。但問題是sData只是需要修剪。 – ddvniek 2014-11-24 08:46:46

+0

沒有Indy 7.與Indy 8一起發佈的Delphi 6(我忘記了Delphi 7附帶的Indy版本)。在8之前,Indy被稱爲WinShoes。 – 2014-11-24 08:56:21

回答

0

沒關係我發現了這個問題。只需修剪名爲sData的字符串。

+0

也許更好的設置sData正確的開始於 – 2014-11-24 06:44:05