5

我正在尝试通过 HTTP GET 方法获取对字符串的 json 响应,但我得到的只是:在此处输入图像描述

我正在使用这样的代码:

memo1.Text:= idhttp1.Get('http://blabla.com/bla.php');

它返回 json 数据。我需要得到对 memo1 的 json 响应。

我怎样才能做到这一点?

4

2 回答 2

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;
于 2013-03-27T17:38:04.527 回答
2

尝试更新版本的 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

于 2013-03-27T11:25:17.150 回答