2012-03-16 20 views
7

Delphi 2005を使用してJSON POSTリクエストの簡単な例をAPIに投稿できますか?GETを使用して多数の例が見つかりましたが、APIプロバイダはHTTP GETによるリクエストを許可せず、URLエンコーディングもサポートしていませんパラメーター。Delphi REST API投稿サンプル

私はRESTサービスを呼び出すための新しいサービスです(以前はSOAPを使用していました)ので、詳しい情報が必要な場合はお知らせください。

答えて

7

インディーズのTIdHTTPコンポーネントを使用し、Postメソッドを呼び出します。最初の引数としてURLを渡し、2番目の引数としてJSON文字列を渡します。このような何か:

procedure TForm1.Button1Click(Sender: TObject); 

    var jsonToSend:TStringList; 
     http:TIDHttp; 
    begin 
    http := TIDHttp.Create(nil); 
    http.HandleRedirects := true; 
    http.ReadTimeout := 5000; 
    jsonToSend:=TStringList.create; 
    jsonToSend.Add('{ Your JSON-encoded request goes here }'); 
    Memo1.Lines.Text:=http.Post('http://your.restapi.url', jsonToSend); 
    jsonToSend.Destroy; 
    http.Destroy; 
    end; 
end. 

私はあなたがすでにJSONをエンコードおよびデコードすることができますと仮定して、あなただけのDelphiを使用してHTTPポストを実行する方法を求めていたものです。

+4

このコードは、 – mjn

+1

...という呼び出しごとにTStringListインスタンスをリークし、http.post()内で例外が発生した場合にメモリ(http + jsontosendインスタンス)をリークします。 –

6

一つの選択肢、私たちのmORMotオープンソース・フレームワークの一部使用して:に送信されたときに、JSONテキストとして変換されますcustom variant storage、使用してJSONコンテンツを構築することができ、ここで

uses SynCrtSock, SynCommons; 
var t: variant; 
begin 
    TDocVariant.New(t); 
    t.name := 'john'; 
    t.year := 1982; 
    TWinHTTP.Post('http://servername/resourcename',t,'Content-Type: application/json'); 
end; 

注意をサーバ。

関連する問題