我正在尝试通过 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;
尝试更新版本的 Indy,Indy 仍然支持非 Unicode Delphi。
Indy TIdHTTP Get 应该自动将 UTF-8 转换为 Ansi(有限制):
在内部,TIdHTTP.Get() 将服务器的 UTF-8 数据解码为 Unicode,然后在 2009 之前的版本中将其作为 AnsiString 返回时将其转换为 Ansi。AnsiString 使用操作系统的默认 Ansi 代码页,所以是的,如果操作系统的当前语言不支持服务器使用的 Unicode 字符,则可能会丢失数据。 http://forums2.atozed.com/viewtopic.php?f=7&t=3011