伪造Api PATCH请求返回415“不支持的媒体类型”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了伪造Api PATCH请求返回415“不支持的媒体类型”相关的知识,希望对你有一定的参考价值。
我正在使用Forge API。我需要执行PATCH请求。当我使用Postman发送它时一切都很好,但是当我使用HttpRequestMessage构建请求时,我得到一个响应 - “415不支持的媒体类型”。通过API文档Content-Type I设置为“application / vnd.api + json”。
邮递员的要求
JObject jsonApi = new JObject();
jsonApi.Add("version", "1.0");
JObject attributes = new JObject();
attributes.Add("displayName", file.FileName);
JObject data = new JObject();
data.Add("type", "items");
data.Add("id", file.ExternalFileId);
data.Add("attributes", attributes);
JObject request = new JObject();
request.Add("jsonapi", jsonApi);
request.Add("data", data);
using (var httpClient = new HttpClient())
{
HttpRequestMessage http = new HttpRequestMessage
{
RequestUri = new Uri(url),
Method = new HttpMethod("PATCH"),
Headers =
{
{ HttpRequestHeader.Authorization.ToString(), "Bearer " + userLastAccessToken },
{ HttpRequestHeader.Accept.ToString(), "application/vnd.api+json" }
}
};
http.Content = new StringContent(request.ToString(), Encoding.UTF8, "application/vnd.api+json");
HttpResponseMessage responseMessage = await httpClient.SendAsync(http);
}
答案
再次使用"application/json"
或使用HttpHeaders.TryAddWithoutValidation
("application/vnd.api+json"
可能不适合HttpHeaders
的内部验证):
http.Content = new StringContent(request.ToString(), Encoding.UTF8, "application/json");
要么:
http.Content = new StringContent(request.ToString(), Encoding.UTF8);
http.Headers.TryAddWithoutValidation("Content-Type", "application/vnd.api+json");
另一答案
好的,我通过这种方式设置内容类型来解决问题
http.Content = new StringContent(request.ToString(), Encoding.UTF8);
http.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/vnd.api+json");
以上是关于伪造Api PATCH请求返回415“不支持的媒体类型”的主要内容,如果未能解决你的问题,请参考以下文章
“标题”:“不支持的媒体类型”,“状态”:从 python 请求 API 时出现 415 错误
当它应该返回 400 错误请求时,Restlet 是不是返回 415 不支持的媒体类型?
Web API Post 返回 415 - 不支持的媒体类型