Заголовок авторизации C# httpclient у меня не работает? ⇐ C#
-
Anonymous
Заголовок авторизации C# httpclient у меня не работает?
Я пытаюсь создать приложение, которое позволит мне запрашивать базу данных из Discogs.
Согласно документации API, я могу сделать это с помощью токена, поэтому я зарегистрировался и получил токен пользователя.
Теперь, когда я использую почтальона с https://api.discogs.com/database/search ... e=1&token= Я получаю JSON, как и ожидал.
Но когда я создаю httpclient на C# с этим токеном:
публичный строковый токен = ; общественный статический клиент HttpClient {get; набор; } публичная статическая асинхронная задача InitilizeClient() { дождитесь GetAccesToken(); } частная статическая асинхронная задача GetAccesToken() { клиент = новый HttpClient(); client.DefaultRequestHeaders.Accept.Clear(); client.BaseAddress = новый Uri(@"https://api.discogs.com"); //client.DefaultRequestHeaders.Authorization=new AuthenticationHeaderValue("Discogs", "token="+token); client.DefaultRequestHeaders.TryAddWithoutValidation("Авторизация","Discogs token=" + токен); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); } а затем используйте клиент вот так
public static async Task QueryDataBaseAsync (строковый запрос) { если (запрос == ноль) { throw new Exception("запрос пуст"); } строка URL = ""; url = @"https://api.discogs.com/database/search ... le="+query; если (клиент == ноль) { ожидайте InitilizeClient(); } используя (ответ HttpResponseMessage = ожидайте client.GetAsync(url)) { если (ответ.IsSuccessStatusCode) { } еще { выдать новое исключение(response.ReasonPhrase + "\n" + response.RequestMessage.ToString()); } } } тогда я всегда получаю:
Фраза причины «запрещено», «код состояния: 403»
когда я ставлю точку останова на свой HttpResponseMessage ответ, я вижу, что в разделе «headers»=>»responsemessage»=>»headers»=>«authorization» есть мой токен.
>
Что я делаю не так?
ПС. Я новичок в программировании, поэтому буду признателен, если вы объясните, что я сделал не так
Я пытаюсь создать приложение, которое позволит мне запрашивать базу данных из Discogs.
Согласно документации API, я могу сделать это с помощью токена, поэтому я зарегистрировался и получил токен пользователя.
Теперь, когда я использую почтальона с https://api.discogs.com/database/search ... e=1&token= Я получаю JSON, как и ожидал.
Но когда я создаю httpclient на C# с этим токеном:
публичный строковый токен = ; общественный статический клиент HttpClient {get; набор; } публичная статическая асинхронная задача InitilizeClient() { дождитесь GetAccesToken(); } частная статическая асинхронная задача GetAccesToken() { клиент = новый HttpClient(); client.DefaultRequestHeaders.Accept.Clear(); client.BaseAddress = новый Uri(@"https://api.discogs.com"); //client.DefaultRequestHeaders.Authorization=new AuthenticationHeaderValue("Discogs", "token="+token); client.DefaultRequestHeaders.TryAddWithoutValidation("Авторизация","Discogs token=" + токен); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); } а затем используйте клиент вот так
public static async Task QueryDataBaseAsync (строковый запрос) { если (запрос == ноль) { throw new Exception("запрос пуст"); } строка URL = ""; url = @"https://api.discogs.com/database/search ... le="+query; если (клиент == ноль) { ожидайте InitilizeClient(); } используя (ответ HttpResponseMessage = ожидайте client.GetAsync(url)) { если (ответ.IsSuccessStatusCode) { } еще { выдать новое исключение(response.ReasonPhrase + "\n" + response.RequestMessage.ToString()); } } } тогда я всегда получаю:
Фраза причины «запрещено», «код состояния: 403»
когда я ставлю точку останова на свой HttpResponseMessage ответ, я вижу, что в разделе «headers»=>»responsemessage»=>»headers»=>«authorization» есть мой токен.
>
Что я делаю не так?
ПС. Я новичок в программировании, поэтому буду признателен, если вы объясните, что я сделал не так
Мобильная версия