動的オブジェクトを以下のように送信したい
new { x = 1, y = 2 };
hTTP POSTメッセージの本文として。だから私は書いてみる
var client = new HttpClient();
しかし私は方法を見つけることができません
client.PostAsJsonAsync()
だから私はproject.jsonにMicrosoft.AspNetCore.Http.Extensionsパッケージを追加して追加しようとしました
using Microsoft.AspNetCore.Http.Extensions;
節を使用します。しかし、それは私を助けませんでした。
では、ASP.NET CoreでJSON本文を使用してPOST要求を送信する最も簡単な方法は何ですか?
"Microsoft.AspNet.WebApi.Client"パッケージへの参照を追加する必要があります(サンプルについては この記事 を参照)。
追加の拡張子がなくても、標準のPostAsync
メソッドを使用できます。
client.PostAsync(uri, new StringContent(jsonInString, Encoding.UTF8, "application/json"));
ここでjsonInString
の値はJsonConvert.SerializeObject(<your object>);
を呼び出すことで得られます。
私はこのクラスを使います:
public class JsonContent : StringContent
{
public JsonContent(object obj) :
base(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json")
{ }
}
使用例
new HttpClient().PostAsync("http://...", new JsonContent(new { x = 1, y = 2 }));
私はあなたがAccept
ヘッダーをhttpClient
にも追加したいという、受け入れられた答えを追加します。
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
クラス解析を組み込んでいるので、 IEnterprise.Easy-HTTP を使用できます。
await new RequestBuilder<ExampleObject>()
.SetHost("https://httpbin.org")
.SetContentType(ContentType.Application_Json)
.SetType(RequestType.Post)
.SetModelToSerialize(dto)
.Build()
.Execute();