2017-11-30 13 views
1

を取得し、私は(.NET 3.5)ユニティの公共レポのリリースを取得しようとしているが、私は403エラーを得続ける:これは私のコードであるリリースのGitHub API v3の

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が返されます。

リリースを取得しようとしているテンプレートや何か問題がありますか?

+0

ブラウザで同じURLにリクエストして成功させることはできますか? – mason

+0

@masonはい、[私はjsonを返す](https://api.github.com/repos/Bullrich/unity-console/releases) –

+0

あなたのコードを試しました。 'System.Net.WebExceptionを取得しました。サーバーはプロトコル違反をコミットしました。セクション= ResponseStatusLine'。 – mason

答えて

1

masonのcommentに続いて、私はそれを動作させることができました。今度は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; 
    } 
+0

すべてのリクエストにUser-Agentが必要です - https://developer.github.com/v3/#user-agent-required –

関連する問題