idHTTP返回错误

问题描述:

我试图实现从网页使用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()也会成功返回。即使错误确实发生,“”不应该出现在异常的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

没关系我发现了这个问题。只需修剪名为sData的字符串。

+0

也许更好的设置sData正确的开始于 – 2014-11-24 06:44:05