我在 C# 项目中使用 HTTPClient,并尝试使用 JSON 内容类型发送 JSON 内容。 POST 消息始终作为表单数据发送。
HttpClient client = new HttpClient();
WorkRequest workRequest = new WorkRequest()
{
f1 = "asdf",
....
};
var content = new StringContent(JsonConvert.SerializeObject(workRequest));
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
// Send the ACK request to the workflow for final processing
await client.PostAsync(oxxoWorkflowAckUri, content);
我已经尝试过我在网上找到的无数示例,并且它总是作为内容类型表单数据发送。
有人知道我做错了什么吗?
谢谢你
您的代码大部分是正确的,但
StringContent
构造函数不会自动将内容类型设置为 JSON
,因此,如果您在创建 StringContent
后手动设置标头,有时可能会无法应用。
直接在构造函数中设置
Content-Type
:
using System.Net.Http;
using System.Net.Http.Headers;
using Newtonsoft.Json;
HttpClient client = new HttpClient();
WorkRequest workRequest = new WorkRequest()
{
f1 = "asdf",
};
string jsonString = JsonConvert.SerializeObject(workRequest);
var content = new StringContent(jsonString, System.Text.Encoding.UTF8, "application/json");
await client.PostAsync(oxxoWorkflowAckUri, content);