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。
這裏是源的一部分:
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
任何幫助將不勝感激。
您使用的是什麼版本的Indy?我無法使用最新的Indy 10 SVN快照重現問題。即使IP參數格式不正確,Get()也會成功返回。即使錯誤確實發生,「<!DOCTYPE html>」不應該出現在異常的Message屬性中(調試器通知顯示),它應該在異常的'ErrorMessage'屬性中(而調試器通知不顯示)。 – 2014-11-24 00:17:00
如果我沒有錯誤使用indy即時通訊7.但不是100%確定。 是的,它顯示的信息是奇怪的,我試着谷歌它,但沒有結果。但問題是sData只是需要修剪。 – ddvniek 2014-11-24 08:46:46
沒有Indy 7.與Indy 8一起發佈的Delphi 6(我忘記了Delphi 7附帶的Indy版本)。在8之前,Indy被稱爲WinShoes。 – 2014-11-24 08:56:21