使用 POST 方法从服务器接收数据,并在 C# 中使用 WebClient 请求 body
Receive data from server using POST method and with a request body using WebClient in C#
我正在尝试使用 POST 方法从服务器接收数据,请求应该有一个 body。我正在为此使用 WebClient 并尝试以字符串形式返回响应。我知道我们可以使用 HttpClient 来实现这一点。但我想为这个特定实例使用 WebClient。
我经历了这个 post 并尝试了 UploadString
,响应给了我一个 400 BAD Request。
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 键,请求 body 在 JSON 中)并且它工作正常。
我知道我没有正确格式化请求。谁能帮帮我。
非常感谢@Santiago Hernández。问题是在请求 header 中使用了 wc.Headers.Add("Accept: application/json");
。将其更改为 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
是关于当前请求或响应的 payload/content。如果请求没有负载,请不要使用 Content-type
/body.
有关此的更多信息,请参见 here。
我正在尝试使用 POST 方法从服务器接收数据,请求应该有一个 body。我正在为此使用 WebClient 并尝试以字符串形式返回响应。我知道我们可以使用 HttpClient 来实现这一点。但我想为这个特定实例使用 WebClient。
我经历了这个 post 并尝试了 UploadString
,响应给了我一个 400 BAD Request。
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 键,请求 body 在 JSON 中)并且它工作正常。
我知道我没有正确格式化请求。谁能帮帮我。
非常感谢@Santiago Hernández。问题是在请求 header 中使用了 wc.Headers.Add("Accept: application/json");
。将其更改为 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
是关于当前请求或响应的 payload/content。如果请求没有负载,请不要使用 Content-type
/body.
有关此的更多信息,请参见 here。