为什么在我进行第二次Rest API调用时出现403(禁止)错误?

时间:2019-04-18 15:34:45

标签: c# json rest

我正在从discogs API中获取数据。当我得到一页结果时,它工作正常,但是当我尝试进行第二次调用(以得到下一页结果)时,出现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 个答案:

答案 0 :(得分:3)

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。甚至docs for WebClient状态:

  

我们不建议您将WebClient类用于新开发。而是使用System.Net.Http.HttpClient类。