【发布时间】:2016-12-28 04:55:47
【问题描述】:
所以我只是在玩弄 Spotify 的 Web API,并尝试访问我最常播放的曲目。尽管我遇到了一个问题,但我已经尝试解决了几个小时,但找不到答案。
当我尝试反序列化我的响应时,我收到以下错误:
'UTF8' 不是受支持的编码名称。有关定义自定义编码的信息,请参阅 Encoding.RegisterProvider 方法的文档。 参数名称:名称 ContentType 中提供的字符集无效。无法使用无效字符集将内容读取为字符串。
ContentType 是application/json; charset=UTF8
有什么想法吗?
这是我的请求代码:
private static HttpClient GetHttpClient()
{
HttpClientHandler handler = new HttpClientHandler() {
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
};
var httpClient = new HttpClient(handler);
httpClient.DefaultRequestHeaders.Add("Accept", "application/json");
return httpClient;
}
public async Task<SearchArtistResponse> GetSelfTopAsync(string type, string userName)
{
var httpClient = GetHttpClient();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetAccessToken(userName));
var sb = new StringBuilder();
sb.Append(ApiUrl);
sb.Append($"/me/top/{type}");
var query = sb.ToString();
var response = await httpClient.GetAsync(query);
var spotifyResponse = JsonConvert.DeserializeObject<SearchArtistResponse>(await response.Content.ReadAsStringAsync());
return spotifyResponse;
}
【问题讨论】:
-
我认为这只是 Spotify Web API 中的一个错误,为此端点发送 charset=UTF8 而不是 charset=utf-8。它在这里归档:github.com/spotify/web-api/issues/291
-
我通过specifying the proxy解决了一个类似的问题。
-
您可以提前阅读它,然后在将其提供给反序列化器之前修复错误...