繁体   English   中英

使用Web API时不支持的媒体类型

[英]Unsupported Media Type when using Web API

我想使用公共Web Api: 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#示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM