web-dev-qa-db-ja.com

GETパラメータをPOSTリクエストに追加する

POSTリクエストを次のようなURLに送信したい:

http://localhost/resource?auth_token=1234

そして本文にJSONを送りたい。私のコードは次のようになります:

var client = new RestClient("http://localhost");
var request = new RestRequest("resource", Method.POST);
request.AddParameter("auth_token", "1234");    
request.AddBody(json);
var response = client.Execute(request);

auth_tokenパラメータをGETパラメータにして、リクエストをPOSTとして作成しますか?

20
leninyee

これは、1)トークンをリソースのURLに追加し、2)次のようにParameterType.UrlSegmentを指定した場合に機能します。

var client = new RestClient("http://localhost");
var request = new RestRequest("resource?auth_token={authToken}", Method.POST);
request.AddParameter("auth_token", "1234", ParameterType.UrlSegment);    
request.AddBody(json);
var response = client.Execute(request);

これは理想とはほど遠いですが、私が見つけた最も簡単な方法です...まだもっと良い方法を見つけたいと思っています。

24
Ender2050

RestSharpの現在のバージョンには、テンプレートを利用する短いメソッドがあります。

var request = new RestRequest("resource?auth_token={token}", Method.POST);
request.AddUrlSegment("token", "1234");

または、テンプレートなしでパラメータを追加できます。

var request = new RestRequest("resource", Method.POST);
request.AddQueryParameter("auth_token", "1234); 

または

var request = new RestRequest("resource", Method.POST);
request.AddParameter("auth_token", "1234", ParameterType.QueryString); 
37
Der_Meister