Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Web API时不支持的媒体类型_C#_Asp.net Web Api - Fatal编程技术网

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

C# 使用Web API时不支持的媒体类型,c#,asp.net-web-api,C#,Asp.net Web Api,我想从以下位置使用公共Web Api: 下面是一个代码: using (var client = new HttpClient()) { client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var url = "https://crypto

我想从以下位置使用公共Web Api:

下面是一个代码:

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
作为响应的内容类型。严格来说,这并不正确,但对于这个(似乎)坏掉的服务器来说,可能会使用通配符传递一个Accept头,例如,
*/*
,看看这是否有帮助。

似乎是一个坏掉的服务器实现,如果我在浏览器中加载该URL,它肯定会返回
应用程序/json
,作为响应的内容类型。严格来说,这不是正确的,但是对于这个(看起来)坏了的服务器来说,用通配符传递一个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#示例参考。您忘记了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#示例。

这里似乎是:尝试使用Fiddler或其他工具检查请求头并确保其发送正确的接受头。这里似乎是:尝试使用Fiddler或其他工具检查请求头并确保其发送正确的接受头。找到解决方案?找到解决方案?