Я пытаюсь создать приложение, которое позволяет мне запрашивать базу данных из discogs .
Согласно документации Api я могу сделать это всего лишьмаркер. поэтому я зарегистрировался и получил токен пользователя.
теперь, когда я использую почтальон с https://api.discogs.com/database/search?release_title=nevermind&artist=nirvana&per_page=3&page=1&token=<my_user_token>
, я получаю json, как я ожидал.
, но когда я делаю httpclient в c # с токеном
public string token = <my_user_token>;
public static HttpClient client { get; set; }
public static async Task InitilizeClient()
{
await GetAccesToken();
}
private static async Task GetAccesToken()
{
client = new HttpClient();
client.DefaultRequestHeaders.Accept.Clear();
client.BaseAddress = new Uri(@"https://api.discogs.com");
//client.DefaultRequestHeaders.Authorization=new AuthenticationHeaderValue("Discogs", "token="+token);
client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization","Discogs token=" + token);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}
, а затем использовать клиент, как это
public static async Task QueryDataBaseAsync(string query)
{
if (query == null)
{
throw new Exception("query is empty");
}
string url = "";
url = @"https://api.discogs.com/database/search?release_title="+query;
if (client == null)
{
await InitilizeClient();
}
using (HttpResponseMessage response = await client.GetAsync(url))
{
if (response.IsSuccessStatusCode)
{
}
else
{
throw new Exception(response.ReasonPhrase + " \n" + response.RequestMessage.ToString());
}
}
}
, тогда я всегда получаю ReasonPhrase "запрещено", код состояния: 403 "
, когда я ставлюточка останова на моем HttpResponseMessage response
я вижу, что в разделе "headers" => "responsemessage" => "headers" => "authorization" у меня есть мой токен.
что я делаю неправильно?
ps, извините за плохой английский, это не мой родной язык
ps2, я новичок в программировании, поэтому я был бы признателен, если бы вы могли понять, что я сделал не так