我正在从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...)
块中进行两次呼叫或其他身份验证问题有关吗?
答案 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
类。