使用 HTTPClient 以 application/json 内容类型的字符串形式发送 JSON 内容

问题描述 投票:0回答:1

我在 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);

我已经尝试过我在网上找到的无数示例,并且它总是作为内容类型表单数据发送。

有人知道我做错了什么吗?

谢谢你

json post httpclient
1个回答
0
投票

您的代码大部分是正确的,但

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);
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.