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。
这里是源的一部分:
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
任何帮助将不胜感激。
答
没关系我发现了这个问题。只需修剪名为sData的字符串。
+0
也许更好的设置sData正确的开始于 – 2014-11-24 06:44:05
您使用的是什么版本的Indy?我无法使用最新的Indy 10 SVN快照重现问题。即使IP参数格式不正确,Get()也会成功返回。即使错误确实发生,“”不应该出现在异常的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