Po prostu bawię się z interfejsem internetowym Spotify i próbuję uzyskać dostęp do moich najlepiej odtwarzanych utworów. Chociaż napotkałem problem, który próbuję rozwiązać od kilku godzin, ale nie mogę znaleźć odpowiedzi.'UTF8' nie jest obsługiwaną nazwą kodowania
Kiedy próbuję deserializowania moją odpowiedź, mam follwing błąd:
'UTF8' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method. Parameter name: name The character set provided in ContentType is invalid. Cannot read content as string using an invalid character set.
ContentType jest application/json; charset=UTF8
Jakieś pomysły?
Oto mój kod żądania:
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;
}
Myślę, że to tylko błąd w interfejsie Spotify Web API, wysyłający zestaw znaków charset = UTF8 zamiast charset = utf-8 dla tego punktu końcowego. Jest on złożony tutaj: https://github.com/spotify/web-api/issues/291 – jooon
Rozwiązałem podobny problem przez [określenie serwera proxy] (https://stackoverflow.com/q/16526689/86967). – nobar
Można po prostu przeczytać go z góry, a następnie naprawić błąd przed przekazaniem go do deserializera ... – Nyerguds