gpt4 book ai didi

c# - HttpClient/.NET Core 不支持的媒体类型

转载 作者:行者123 更新时间:2023-11-30 20:15:54 26 4
gpt4 key购买 nike

我正在使用支持 JSON 格式的 POST 请求的 RESTful API。 API 自己的 Swagger 文档显示这是对其端点之一的有效调用:

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '<JSON>' '<URL>'

在哪里<JSON><URL>是有效的 JSON 消息和端点的 URL。从这个 Swagger 文档中,我收集到该端点的任何帖子都必须同时包含 Content-TypeAccept header 设置为 application/json .

我正在编写一个将使用 .NET Core 的 HttpClient 的 C# 方法发布到此端点的类。但是,在发布我的消息后,我收到了 HTTP 415 错误代码,表示不支持的媒体类型。据我目前所了解的,Content-Type必须在您的内容中设置 header (我正在使用 StringContent 类)和 Accept header 只能设置在 HttpClient 中标题。这是我的具体示例:

var httpContent = new StringContent("<JSON>", Encoding.UTF32, "application/json");
var httpClient = new HttpClient();

httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

var responseMessage = httpClient.PostAsync("<URL>", httpContent);
var result = responseMessage.Result;

再一次,<JSON><URL>是有效的 JSON 消息和端点的 URL。在我看来,我引用的第三行 httpCllient.DefaultRequestHeaders , 没有添加 Accept: application/json header 到我的请求。如果我手动将 header 添加到 httpContent.Headers集合,我收到一个运行时错误,告诉我 Accept不是我可以添加到 httpContent 的标题.这就是为什么我希望将它添加到 httpClient反而。

我已经使用 Swagger 验证了 URL 和我的 JSON,所以我知道它们是正确的。此外,请求是通过 HTTPS 完成的,因此我无法使用 Fiddler 来验证 Accept包含 header 。虽然我可以在 Fiddler 中启用解密,但这完全是另一回事。我不想将他们的根证书添加到我的系统中,尤其是当我遗漏了一些相当简单的东西时,这似乎是这样。

任何指针将不胜感激。谢谢。

最佳答案

如果你尝试:

var httpContent = new StringContent(jsonData, Encoding.UTF8, "application/json");

您不需要添加 Accept header 。

关于c# - HttpClient/.NET Core 不支持的媒体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51960142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com