2017-11-30 1 views
1

I 유니티 (.NET 3.5)에서 공공의 repo의 버전을 가져 오기 위해 노력하고있어 출시하지만 난 403 오류가 계속 :가져 오기는 Github에서의 API v3의

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; 
} 
:

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) 

를이 내 코드입니다

repo는 공개되어 있으므로 토큰을 사용할 필요가 없다고 생각합니다.하지만 토큰을 추가하려고 시도 했는데도 여전히 동일한 오류 메시지가 표시됩니다.

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

메이슨의 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). –