c# - 如何使用 HttpClient 将带有 JSON 的 DELETE 发送到 REST API

标签 c# httpclient portable-class-library

我必须使用 HttpClient 类向包含 JSON 内容的 REST API 服务发送删除命令,但无法正常工作。

API 调用:

DELETE /xxx/current
{
 "authentication_token": ""
}

因为我无法在下面的语句中添加任何内容:

HttpResponseMessage response = client.DeleteAsync(requestUri).Result;

我知道如何使用 RestSharp 完成这项工作:

var request = new RestRequest {
    Resource = "/xxx/current",
    Method = Method.DELETE,
    RequestFormat = DataFormat.Json
};

var jsonPayload = JsonConvert.SerializeObject(cancelDto, Formatting.Indented);

request.Parameters.Clear();
request.AddHeader("Content-type", "application/json");
request.AddHeader ("Accept", "application/json");
request.AddParameter ("application/json", jsonPayload, ParameterType.RequestBody);

var response = await client.ExecuteTaskAsync (request);

但我在没有 RestSharp 的情况下完成了它。

最佳答案

虽然现在回答这个问题可能有点晚了但是 我遇到过类似的问题,以下代码对我有用。

HttpRequestMessage request = new HttpRequestMessage
{
    Content = new StringContent("[YOUR JSON GOES HERE]", Encoding.UTF8, "application/json"),
    Method = HttpMethod.Delete,
    RequestUri = new Uri("[YOUR URL GOES HERE]")
};
await httpClient.SendAsync(request);

.NET 5 更新

.NET 5 引入了 JsonContent。这是使用 JsonContent 的扩展方法:

public static async Task<HttpResponseMessage> DeleteAsJsonAsync<TValue>(this HttpClient httpClient, string requestUri, TValue value)
{
    HttpRequestMessage request = new HttpRequestMessage
    {
        Content = JsonContent.Create(value),
        Method = HttpMethod.Delete,
        RequestUri = new Uri(requestUri, UriKind.Relative)
    };
    return await httpClient.SendAsync(request);
}

关于c# - 如何使用 HttpClient 将带有 JSON 的 DELETE 发送到 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28054515/

相关文章:

c# - 按顺序检查缺少的号码

html - HttpClient 连接到互联网;打开跟踪文件时出错 : No such file or directory (2)

java - 具有自签名证书的双向 SSL 客户端

visual-studio-2012 - 添加可移植类库对话框中的 xamarin 支持

单触 : creating multiplatform apps using Portable Class Libraries

visual-studio - 如何更改 Xamarin.Forms(可移植)应用程序中的 PCL 配置文件

c# - 从 Visual Studio 调试停止时的 Excel 僵尸进程

c# - 使用 Hashtable 对象作为 POST 请求的正文/参数(Xamarin Mono 中的 RestSharp)

c# - 发送短信 C#.net

c++ - 是否可以更改 HTTP 客户端超时时间 (cpp-netlib)?