使用Web API时不支持的媒体类型
本文关键字:媒体 类型 不支持 Web API 使用 | 更新日期: 2023-09-27 18:02:39
我想使用公共Web Api from: https://www.xbtce.cc/tradeapi.
这里有一个代码:
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var url = "https://cryptottdemowebapi.xbtce.net:8443/api/v1/public/tick";
HttpResponseMessage response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();
}
结果是:
{StatusCode: 415, ReasonPhrase: 'Unsupported Media Type', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Server: Microsoft-HTTPAPI/2.0
Date: Mon, 15 Aug 2016 16:03:45 GMT
Content-Length: 0
}}
即使添加了"application/json"的请求头,这个错误仍然存在。有什么办法解决这个问题吗?
似乎是一个破碎的服务器实现,如果我在浏览器中加载该URL,它肯定会返回application/json
作为响应的Content-Type。这不是严格正确的,但可能会为这个(看似)破碎的服务器传递一个带有通配符的Accept头,例如*/*
,看看这是否有帮助。
你忘了gzip在正确代码
下面var client = new HttpClient(new PublicContentHandler());
client.BaseAddress = new Uri(_webApiAddress);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
public class PublicContentHandler : HttpClientHandler
{
public PublicContentHandler()
{
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
}
}
参考c#示例链接