Http将json变成字符串

时间:2013-03-27 03:51:16

标签: json delphi delphi-7 indy idhttp

我正在尝试通过HTTP GET方法将json响应转换为字符串,但我得到的只是:enter image description here

我正在使用这样的代码:

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

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

我该怎么做?

2 个答案:

答案 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