C# 获取GithubAPI v3的发布
我正在尝试获取Unity(.NET 3.5)中的公共回购协议版本,但我一直收到403个错误:C# 获取GithubAPI v3的发布,c#,unity3d,github-api,C#,Unity3d,Github Api,我正在尝试获取Unity(.NET 3.5)中的公共回购协议版本,但我一直收到403个错误: WebException: The remote server returned an error: (403) Forbidden. System.Net.HttpWebRequest.CheckFinalStatus (System.Net.WebAsyncResult result) System.Net.HttpWebRequest.SetResponseData (System.Net.Web
WebException: The remote server returned an error: (403) Forbidden.
System.Net.HttpWebRequest.CheckFinalStatus (System.Net.WebAsyncResult result)
System.Net.HttpWebRequest.SetResponseData (System.Net.WebConnectionData data)
这是我的代码:
private string GetReleases(string username, string repoName)
{
const string GITHUB_API = "https://api.github.com/repos/{0}/{1}/releases";
WebClient webClient = new WebClient();
Uri uri = new Uri(string.Format(GITHUB_API, username, repoName));
string releases = webClient.DownloadString(uri);
return releases;
}
因为回购协议是公开的,我相信我不需要使用代币,但为了以防万一,我尝试添加一个代币,但仍然收到相同的错误消息
webClient.Headers.Add("Authorization", string.Format("Token {0}", "myToken"));
如果我从浏览器输入该url,它会返回一个包含所有repo版本的json
我尝试获取发布版的方式是否存在模板或错误?继mason之后,我能够使其正常工作,现在它返回json
private string GetReleases(string username, string repoName)
{
const string GITHUB_API = "https://api.github.com/repos/{0}/{1}/releases";
WebClient webClient = new WebClient();
// Added user agent
webClient.Headers.Add("User-Agent", "Unity web player");
Uri uri = new Uri(string.Format(GITHUB_API, username, repoName));
string releases = webClient.DownloadString(uri);
return releases;
}
你能用浏览器向同一个URL发出请求并成功吗?@mason是的,我试过你的代码。获取了
System.Net.WebException。服务器违反了协议。Section=ResponseStatusLine
。在我搜索该错误后,我发现您需要设置web客户端的用户代理。我做到了,而且成功了。请记住,服务器只处理HTTP请求和响应。他们实际上不知道客户机是浏览器还是程序,因此,如果您像浏览器一样设计请求,他们的服务器将不知道区别。您可以使用类似的工具来检查请求和响应。所有请求都需要用户代理-