我正在尝试通过HTTP GET方法将json响应转换为字符串,但我得到的只是:
我正在使用这样的代码:
memo1.Text:= idhttp1.Get('http://blabla.com/bla.php');
它返回json数据。我需要得到对memo1的json响应。
我该怎么做?
答案 0 :(得分:5)
我找到了解决方案。该代码非常完美。
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;
答案 1 :(得分:2)
尝试更新版本的Indy,Indy仍然支持非Unicode Delphi。
Indy TIdHTTP Get应该自动将UTF-8转换为Ansi(有限制):
在内部,TIdHTTP.Get()将服务器的UTF-8数据解码为Unicode, 然后在将其作为AnsiString返回时将其转换为Ansi 2009年之前的版本。 AnsiString使用操作系统的默认Ansi 代码页,是的,如果操作系统是当前的,则可能会丢失数据 语言不支持使用的Unicode字符 服务器。 http://forums2.atozed.com/viewtopic.php?f=7&t=3011