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は引き続き非UnicodeDelphiをサポートしています。

Indy TIdHTTP Getは、UTF-8をAnsiに自動的に変換する必要があります(制限付き)。

内部的には、TIdHTTP.Get()はサーバーのUTF-8データをUnicodeにデコードし、2009年より前のバージョンでAnsiStringとして返すときにそれをAnsiに変換します。そのAnsiStringはOSのデフォルトのAnsiコードページを使用するため、OSの現在の言語がサーバーで使用されているUnicode文字をサポートしていない場合、データが失われる可能性があります。 http://forums2.atozed.com/viewtopic.php?f=7&t=3011

于 2013-03-27T11:25:17.150 に答える