繁体   English   中英

在 C# 中使用 POST 方法和使用 WebClient 的请求正文从服务器接收数据

[英]Receive data from server using POST method and with a request body using WebClient in C#

我正在尝试使用 POST 方法从服务器接收数据,并且请求应该有一个正文。 我为此使用 WebClient 并尝试以字符串形式获取响应。 我知道我们可以使用 HttpClient 来实现这一点。 但我想为这个特定的实例使用 WebClient。

我浏览了这篇文章并尝试了UploadString并且响应给了我一个 400 BAD 请求。

using (var wc = new WebClient())
{
      wc.Headers.Add("Accept: application/json");
      wc.Headers.Add("User-Agent: xxxxxxx");
      wc.Headers.Add($"Authorization: Bearer {creds.APIKey.Trim()}");

      var jsonString = JsonConvert.SerializeObject(new UserRequestBody
      {
          group_id = userDetails.data.org_id
      });

      var response = wc.UploadString("https://api.xxxxx.yyy/v2/users", "POST", jsonString);
}

我使用 Postman 测试了端点(请求 header 具有 api 密钥和 JSON 中的请求正文),它工作正常。 在此处输入图像描述

我知道我没有正确格式化请求。 有人可以帮帮我吗。

非常感谢@Santiago Hernández。 问题是使用wc.Headers.Add("Accept: application/json"); 在请求 header 中。 将其更改为wc.Headers.Add("Content-Type: application/json"); 返回 200 Ok 响应。 代码修改如下

using (var wc = new WebClient())
{
      wc.Headers.Add("Content-Type: application/json");
      wc.Headers.Add("User-Agent: xxxxxxx");
      wc.Headers.Add($"Authorization: Bearer {creds.APIKey.Trim()}");

      var jsonString = JsonConvert.SerializeObject(new UserRequestBody
      {
          group_id = userDetails.data.org_id
      });

      var response = wc.UploadString("https://api.xxxxx.yyy/v2/users", "POST", jsonString);
}

Accept告诉服务器客户端将接受的响应类型, Content-type是关于当前请求或响应的有效负载/内容。 如果请求没有有效负载/正文,请不要使用Content-type

可以在此处找到有关此的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM