13
HttpClientを使用してWeb APIにPOSTしようとしています。 Web APIのSaveメソッドにブレークポイントを設定すると、[FromBody] Productはnullになります。これは、Web APIに製品を投稿する方法に何か問題があることを意味します。誰かが下のコードを見て、どこが間違っているのか見てください。私はそれがヘッダーとコンテンツの種類と関係があると想定しています。HttpClientとWeb APIメソッド[FromBody]パラメータを使用してWeb APIにポストするとnullになる
JSONとしてを通して製品オブジェクトを渡す必要がウェブAPIへのクライアントリポジトリからPOSTコール:
public async Task<Product> SaveProduct(Product product)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:99999/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
StringContent content = new StringContent(JsonConvert.SerializeObject(product));
// HTTP POST
HttpResponseMessage response = await client.PostAsync("api/products/save", content);
if (response.IsSuccessStatusCode)
{
string data = await response.Content.ReadAsStringAsync();
product = JsonConvert.DeserializeObject<Product>(data);
}
}
return product;
}
ウェブAPIコントローラ方法:
[HttpPost]
[Route("save")]
public IActionResult Save([FromBody]Product product)
{
if (customer == null)
{
return HttpBadRequest();
}
_manager.SaveCustomer(product);
return CreatedAtRoute("Get", new { controller = "Product", id = product.Id }, product);
}
[FromBody]製品の商品パラメータがnullになる
私が使用して文の中でのHttpClientをラップしないことをお勧めしますでしょうhttps://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/を見ます – Xander