2016-08-24 54 views
-2

JS ajaxレスポンスと同様に、DelphiのIdHTTPでレスポンステキストを取得するにはどうすればよいですか?ページコンテンツを含む標準のresponseTextプロパティがあります。また、IdHTTPにはresponseCodeプロパティがありますが、HTTPステータスコードを表します。Delphi IdHTTPレスポンステキスト

たとえば、JS ajaxレスポンスにはstatusCodeとresponseTextがあります(画像参照)。 XMLHttpRequest

enter image description here

+0

これは、通常の要求では0を返し、エラーでは負の数を返すカスタムAPIのrepsonseコードです。 – Ariakas

+0

質問:レスポンスで完全なコンテンツにアクセスする方法を尋ねていますか?または、サーバーから受け取ったこのJSONを解析する方法を尋ねていますか? '-1'はフル*コンテンツを受け取ったのですか?または、JSONオブジェクトは*フル*コンテンツですか? –

+0

JSONは、JSでajaxを使用して取得するレスポンスの単なる例です。 DelphiのResponseTextには、「HTTP/1.1 400の不正なweb-api-key」という文字列が含まれています。 AjaxのresponseTextには '-1'が含まれています。私はデルファイで '-1'を取得する必要があります。 – Ariakas

答えて

1

さて、私は最終的に解決策を見つけました。私の質問は、最初は不明であった場合

try 
    Result := id_http.Post(url, params); 
except 
    on E: EIdHTTPProtocolException do 
    if (id_http.ResponseCode = 400) then 
     Result := E.ErrorMessage 
    else 
     Result := E.Message; 
end; 

申し訳ありません:私は試してみる...キャッチオペレータとEIdHTTPProtocolExceptionを使用することを取得します。

3

responseTextインディ・ライブラリー内の応答の「コンテンツ」に相当します。 TIdHTTP.Getへの呼び出しでは、このコンテンツを取得する方法がいくつか用意されています。最も簡単なだけで、コンテンツの種類に応じてString ...

var 
    ResponseText: String; 
begin 
    ResponseText := IdHTTP1.Get('www.google.com'); 
    ... 
end; 

としてGet関数の結果を読み取ることで、あなたが埋めることができた。一例のために、Getの他のオーバーロードのいずれかを使用することを望むかもしれませんa TStream

+0

はい、まずTIdHTTP.Get()オーバーロードを使用してJSONコンテンツをダウンロードし、JSONを解析して 'status'と' responseText'値を抽出する必要があります。 –

関連する問題