client.DeleteAsync - 包含正文

时间:2017-03-25 16:05:56

标签: asp.net-web-api asp.net-mvc-5 asp.net-web-api2 dotnet-httpclient

我有一个ASP.NET MVC 5网站 - 在C#客户端代码中我正在使用HttpClient.PutAsJsonAsync(path,myObject)来调用Json API(API也是我在Web API中创建的)。

client.BaseAddress = new Uri("http://mydomain");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.PutAsJsonAsync("api/something", myObj);

我想用删除动词做同样的事情。但是client.DeleteAsync不允许对象在体内传递。 (我想在URI中记录删除的原因以及要删除的项目的ID)。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:6)

你必须放弃一点方便,因为较高级DeleteAsync不支持一个正文,但它仍然非常简单地做到了“漫长的道路”:

var request = new HttpRequestMessage {
    Method = HttpMethod.Delete,
    RequestUri = new Uri("http://mydomain/api/something"),
    Content = new StringContent(JsonConvert.SerializeObject(myObj), Encoding.UTF8, "application/json")
};
var response = await client.SendAsync(request);