2013-11-03 59 views
1

晚上好。401從c#console連接到github API的錯誤應用程序

對C#有點新鮮感,但是我正在玩github api,而且我試圖讓我的頭部繞過一些基本的身份驗證。我寫了一個控制檯應用程序,唯一的目標是鏈接github網站並從那裏拉下我的個人資料。當我做一個不需要認證的調用時,它就可以正常工作。

但是,如果我嘗試使用基本身份驗證進行身份驗證,即使輸入了正確的用戶名和密碼,也會出現401錯誤。我GOOGLE了,它看起來像我的代碼是正確的,但我不明白爲什麼我沒有被授權。

我附上了下面的代碼,所有使用的東西都存在並且正確。

class gitHubConnection : ConnectionManager 
{ 
    public override string getRepositories() 
    { 
     string web_response = null; 
     try 
     { 
      CredentialCache cache = new CredentialCache(); 
      NetworkCredential nc = new NetworkCredential("githubUsername", "githubPassword"); 
      cache.Add(new Uri("https://api.github.com/user"), "Basic", nc); 
      WebRequest request = (HttpWebRequest)WebRequest.Create("https://api.github.com/user"); 

      request.Credentials = nc; 
      WebResponse response = request.GetResponse(); 

      web_response = response.ToString(); 
     } 
     catch (UriFormatException e) 
     { 
      Console.WriteLine("rats!!!!" + e.StackTrace); 
     } 
     catch (IOException ioe) 
     { 
      Console.WriteLine("something went pop " + ioe.StackTrace); 
     } 
     return web_response; 
    } 
} 

非常感謝您的時間來看看這個。我確信我已經忘記了一些東西,但我不知道是什麼。

Welshboy

+1

如果你有興趣你的問題讓我好奇,所以我已經嘗試了一些研究,爲什麼你的代碼沒」工作。這導致我問以下問題:http://stackoverflow.com/q/19764113/849741 –

回答

2

如果添加authentitication頭這樣它的工作原理:

WebRequest request = (HttpWebRequest)WebRequest.Create("https://api.github.com/user"); 
request.Headers.Add(HttpRequestHeader.Authorization, "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("user:password"))); 

WebResponse response = request.GetResponse(); 
+0

謝謝喬斯,這很好,非常感謝你:-)它完美的工作。 – Welshboy

+1

不客氣:-) –

相關問題