Http получить JSON в строку

Я пытаюсь получить ответ JSON через HTTP GET метод в строку, но все, что я получил, это:

Я использую такой код:

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

он возвращает данные JSON. Мне нужно получить ответ JSON на memo1.

Как я могу это сделать?

2 ответа

Решение

Я нашел решение. Этот код работает отлично.

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, а затем преобразует их в Ansi при возврате в виде AnsiString в версиях до 2009 года. Что AnsiString использует кодовую страницу Ansi по умолчанию в ОС, так что да, существует вероятность потери данных, если текущий язык ОС не поддерживает символы Unicode, используемые сервером. http://forums2.atozed.com/viewtopic.php?f=7&t=3011

Другие вопросы по тегам