これは、安静な Web API にオブジェクトを投稿するために私が使用した種類のアプローチです。
HttpResponseMessage response;
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://url_to_service");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var responseTask = client.PostAsJsonAsync("api/resource/somethingelse", someObjectToPost).Result;
responseTask.Wait();
response = responseTask.Result;
if (response.IsSuccessStatusCode)
{
var contentTask = response.Content.ReadAsAsync<SomeResponseType>();
contentTask.Wait();
SomeResponseType responseContent = contentTask.Result;
}
else
{
//Handle error.
}
この場合、someObjectToPost
はクライアント側オブジェクトですが、Web API に任せてシリアル化することもできます。上記の例では、応答が架空のタイプであると想定しています。応答がプレーンテキストであると予想される場合にSomeResponseType
も使用できます。ReadAsStringAsync