所以我只是在玩Spotify的Web API,而我正试图访问我的最佳播放曲目.虽然我遇到了一个问题,但我一直试图解决几个小时,但我找不到答案.
当我尝试反序列化我的响应时,我得到以下错误:
"UTF8"不是受支持的编码名称.有关定义自定义编码的信息,请参阅Encoding.RegisterProvider方法的文档.参数名称:name 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;
}
Run Code Online (Sandbox Code Playgroud)
Sim*_*hid 14
你在使用.net核心吗?
您需要添加以下代码以使您的环境中可用的.NET桌面中的编码可用:
System.Text.EncodingProvider provider = System.Text.CodePagesEncodingProvider.Instance;
Encoding.RegisterProvider(provider);
Run Code Online (Sandbox Code Playgroud)
更多信息CodePagesEncodingProvider.Instance可以在这里找到.
小智 13
问题应该是响应头的验证,Content-Type当你调用时ReadAsStringAsync(),如果你调用ReadAsByteArrayAsync()并解析为字符串,就会发生这种情况
(System.Text.Encoding.UTF8.GetString())
Run Code Online (Sandbox Code Playgroud)
那将会奏效!!!
| 归档时间: |
|
| 查看次数: |
12223 次 |
| 最近记录: |