C# 使用Web API时不支持的媒体类型
我想从以下位置使用公共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
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或其他工具检查请求头并确保其发送正确的接受头。找到解决方案?找到解决方案?