2014-11-23 1 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. 'Get()' возвращается успешно, даже если параметр IP искажен. Даже если ошибка произошла, '' не должен находиться в свойстве «Message» исключения, которое отображается в уведомлении отладчика, оно должно быть в свойстве «ErrorMessage» исключения, которое делает уведомление отладчика не показывать). –

+0

Если я не ошибаюсь, я использую indy 7. Не 100% уверен, хотя. И да, сообщение, которое оно показало, странно, я попробовал его, но не получил никаких результатов. Но проблема заключалась в том, что sData просто нужно было обрезать. – ddvniek

+0

Нет Indy 7. Delphi 6 поставляется с Indy 8 (я забыл, какая версия Indy поставляется с Delphi 7). До 8 года Indy называлась WinShoes. –

ответ

0

Nevermind Я нашел проблему. Просто пришлось обрезать строку с именем sData.

+0

Возможно, лучше установить sData правильно, чтобы начать с –