WebApi クライアントを使用して、WebApi テスト プロジェクトに投稿しています。コントローラーの post メソッドは、単一のパラメーター (モデル) を受け入れます。
JSON を使用して投稿すると、すべて機能します。XML を使用して投稿すると、パラメーターは常に null になります。これはバグですか?
var client = new HttpClient();
// on the server side, the loan param will be null
var response = client.PostAsXmlAsync(
"http://localhost.fiddler:54835/api/Loan/PostLoan",
new Loan() { LoanId = 1 }).Result;
// on the server side, the loan param is just fine
var response = client.PostAsJsonAsync(
"http://localhost.fiddler:54835/api/Loan/PostLoan",
new Loan() { LoanId = 1 }).Result;
2 つの呼び出しの唯一の違いは、一方が を呼び出しPostAsXmlAsync
、もう一方が を呼び出していることですPostAsJsonAsync
。
これが私のコントローラーの署名です(私はアクションベースのルーティングを使用しています):
[HttpPost]
public void PostLoan(Loan loan)
{
Debug.WriteLine(loan.LoanId);
}
そして、ここに私のテストモデルがあります:
public class Loan
{
public int LoanId { get; set; }
}
そして、ここに私のルーティングがあります:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "get", id = RouteParameter.Optional }