Почему я получаю ошибку 403 (Запрещено) при втором вызове Rest API? - PullRequest
3 голосов
/ 18 апреля 2019

Я получаю данные из API Discogs. Он отлично работает, когда я получаю одну страницу результатов, но когда я пытаюсь сделать второй вызов (чтобы получить следующую страницу результатов), я получаю ошибку 403 (Запрещено).

using (WebClient wc = new WebClient())        
{
  wc.Headers.Add("user-agent", "myUserName");
  var json = wc.DownloadString(String.Format("https://api.discogs.com/users/{0}/collection/folders/0/releases", username));    
  var json2 = wc.DownloadString(String.Format("https://api.discogs.com/users/{0}/collection/folders/0/releases?page=2", username));
}

Это как-то связано с выполнением двух вызовов в одном блоке using (WebClient...) или с какой-либо другой проблемой аутентификации?

1 Ответ

3 голосов
/ 18 апреля 2019

Заголовки в WebClient очищаются после каждого вызова, поэтому вам нужно будет добавить их заново, например:

using (WebClient wc = new WebClient())        
{
    wc.Headers.Add("user-agent", "myUserName");
    var json = wc.DownloadString(String.Format("https://api.discogs.com/users/{0}/collection/folders/0/releases", username));    

    wc.Headers.Add("user-agent", "myUserName");
    var json2 = wc.DownloadString(String.Format("https://api.discogs.com/users/{0}/collection/folders/0/releases?page=2", username));
}

Тем не менее, вам стоит подумать об использовании более новой, современной HttpClient. Даже документы для WebClient состояния:

Мы не рекомендуем использовать класс WebClient для новых разработок. Вместо этого используйте класс System.Net.Http.HttpClient.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...