4

HttpClientを使用して複数のパラメータでPostメソッドを呼び出すにはどうすればよいですか?

私は単一のパラメーターで次のコードを使用しています:

var paymentServicePostClient = new HttpClient();
paymentServicePostClient.BaseAddress = 
                  new Uri(ConfigurationManager.AppSettings["PaymentServiceUri"]);

PaymentReceipt payData = SetPostParameter(card);
var paymentServiceResponse = 
   paymentServicePostClient.PostAsJsonAsync("api/billpayment/", payData).Result;

別のパラメータuseridを追加する必要があります。'postData'と一緒にパラメータを送信するにはどうすればよいですか?

WebApi POSTメソッドのプロトタイプ:

public int Post(PaymentReceipt paymentReceipt,string userid)
4

3 に答える 3

8

両方のプロパティを含むWebApiコントローラーのビューモデルを使用するだけです。したがって、代わりに:

public HttpresponseMessage Post(PaymentReceipt model, int userid)
{
    ...
}

使用する:

public HttpresponseMessage Post(PaymentReceiptViewModel model)
{
    ...
}

ここで、PaymentReceiptViewModelは明らかにuseridプロパティを含みます。その後、通常どおりメソッドを呼び出すことができます。

var model = new PaymentReceiptViewModel()
model.PayData = ...
model.UserId = ...
var paymentServiceResponse = paymentServicePostClient
    .PostAsJsonAsync("api/billpayment/", model)
    .Result;
于 2013-02-28T11:51:26.730 に答える
6

UserIdクエリ文字列に含める必要があります:

var paymentServiceResponse = paymentServicePostClient
                            .PostAsJsonAsync("api/billpayment?userId=" + userId.ToString(), payData)
                            .Result;
于 2013-02-28T12:00:17.173 に答える
5

私の場合、既存のViewModelは、WebAPIに投稿したいデータとうまく一致していません。そのため、モデルクラスのまったく新しいセットを作成する代わりに、匿名型を投稿し、コントローラーに動的を受け入れさせました。

var paymentServiceResponse = paymentServicePostClient.PostAsJsonAsync("api/billpayment/", new { payData, userid }).Result;



public int Post([FromBody]dynamic model)
{
    PaymentReceipt paymentReceipt = (PaymentReceipt)model.paymentReceipt;
    string userid = (string)model.userid;

    ...

}

(このアプローチに関するフィードバックを聞きたいと思います。コードは間違いなくはるかに少ないです。)

于 2014-08-19T12:01:13.483 に答える