내가 문자열로 HTTP GET 방법을 통해 JSON 응답을 얻으려고로하지만 내가 가진 모든 것입니다 :HTTP GET JSON 문자열
memo1.Text:= idhttp1.Get('http://blabla.com/bla.php');
: 그와 같은 코드를 사용하고

json 데이터를 반환합니다. 나는 memo1에 대한 json 응답을 얻을 필요가있다.
어떻게하면됩니까?
내가 문자열로 HTTP GET 방법을 통해 JSON 응답을 얻으려고로하지만 내가 가진 모든 것입니다 :HTTP GET JSON 문자열
memo1.Text:= idhttp1.Get('http://blabla.com/bla.php');
: 그와 같은 코드를 사용하고
json 데이터를 반환합니다. 나는 memo1에 대한 json 응답을 얻을 필요가있다.
어떻게하면됩니까?
해결책을 찾았습니다. 그 코드는 완벽하게 작동합니다.
function GetURLAsString(aURL: string): string;
var
lHTTP: TIdHTTP;
lStream: TStringStream;
begin
lHTTP := TIdHTTP.Create(nil);
lStream := TStringStream.Create(Result);
try
lHTTP.Get(aURL, lStream);
lStream.Position := 0;
Result := lStream.ReadString(lStream.Size);
finally
FreeAndNil(lHTTP);
FreeAndNil(lStream);
end;
end;
대화 상자 오류를 표시하지 않고 오류를 텍스트로 가져 오는 방법이 있습니까? GetURLAsString ('http://google.com')'301 대화 상자가 열립니다. ' –
Indy의 새로운 버전을 사용해보십시오. Indy는 여전히 비 유니 코드 Delphi를 지원합니다.
인디 TIdHTTP automatially (제한 사항) ANSI로 UTF-8 변환해야 얻을 :
내부적으로 TIdHTTP.Get()는 유니 코드, 에 서버의 UTF-8 데이터를 디코딩 한 후 해당 변환 Ansi는 AnsiString으로 반환 할 때 이전 2009 버전입니다. AnsiString은 OS의 기본 Ansi 코드 페이지를 사용하므로 OS의 현재 언어가 서버에서 사용중인 유니 코드 문자를 지원하지 않으면 데이터 손실 가능성이 있습니다. http://forums2.atozed.com/viewtopic.php?f=7&t=3011
확인 당신이받는 텍스트의 인코딩 (어딘가에 헤더에 있어야한다) 및 유니 코드가 아닌 델파이를 사용하는 ANSI로 적절한 번역/변환, 즉 UTF-8을 적용합니다. 이러한 용어를 찾는 것은 많은 예제를 가져와야합니다. –
@MarjanVenema : 문자열을 반환하는 'TIdHTTP.Get()'의 오버로드 된 버전은 이미 정확히 수행합니다. –
@RemyLebeau : Cool. 알아 둘만한. –