Что я пытаюсь достичь вернуть некоторые данные из веб-страницы с помощью 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. 'Get()' возвращается успешно, даже если параметр IP искажен. Даже если ошибка произошла, '' не должен находиться в свойстве «Message» исключения, которое отображается в уведомлении отладчика, оно должно быть в свойстве «ErrorMessage» исключения, которое делает уведомление отладчика не показывать). –
Если я не ошибаюсь, я использую indy 7. Не 100% уверен, хотя. И да, сообщение, которое оно показало, странно, я попробовал его, но не получил никаких результатов. Но проблема заключалась в том, что sData просто нужно было обрезать. – ddvniek
Нет Indy 7. Delphi 6 поставляется с Indy 8 (я забыл, какая версия Indy поставляется с Delphi 7). До 8 года Indy называлась WinShoes. –