2014-11-23 4 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)을 인코딩하려고 시도했지만 오류가 발생하지 않았지만 반환되는 데이터가 올바르지 않습니다.

http://www.robin-william.net/Osiris/geo.php?ip=88.106.170.45%0A 

어떤 도움을 크게 감상 할 수 다음과 같이

인코딩 된 URL 보인다.

+0

사용중인 Indy의 버전은 무엇입니까? 최신 Indy 10 SVN 스냅 샷을 사용하여 문제를 재현 할 수 없습니다. 'Get()'은 IP 매개 변수가 잘못된 경우에도 성공적으로 반환됩니다. 에러가 발생했다하더라도,''은 예외의'Message' 속성 (디버거 알림이 표시 함)에 있어서는 안되며, 디버거 알림 대신에 예외의'ErrorMessage' 속성에 있어야합니다 표시하지 않음). –

+0

만약 내가 indy를 사용하여 메신저를 오해하지 않는다면. 예, 표시된 메시지가 이상합니다. Googleing을 시도했지만 결과가 없습니다. 그러나 문제는 sData가 손질되어야한다는 것입니다. – ddvniek

+0

Indy가 없습니다. 7. Delphi 6은 Indy 8과 함께 제공되었습니다 (Delphi 7과 함께 제공되는 Indy의 버전을 잊어 버렸습니다). 8시 이전에는 Indy가 대신 WinShoes로 알려졌습니다. –

답변

0

Nevermind 문제를 발견했습니다. 그냥 sData라는 문자열을 다듬어야했습니다.

+0

아마도 sData를 올바르게 시작하는 것이 더 좋을 것입니다. –