項目中需要使用GitHub 的restful API來fork, commit, pull request.
在使用HttpWebRequest來Post請求時設置了正確的Header和Body但是返回403Forbidden錯誤
解決方案:增加獲取身份驗證信息
httpRequest.UserAgent = "Code Sample Web Client"
GitHub for API: https://developer.github.com/v3/repos/forks/#create-a-fork
public static async Task PullRequestAsync()
{
string url_fork = @"https://api.github.com/repos/OWNERNAME/REPO_YOU_WANT/forks";
string res = Post(url_fork, "");//如果是organization調用需要加參數
Console.WriteLine(res);
}
public static string Post(string url, string content)
{
string result = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
//req.Headers.Add("ContentType", "application/vnd.github.v3+json");
req.Headers.Add("Authorization", "token *********");
req.UserAgent = "Code Sample Web Client";
//byte[] data = Encoding.UTF8.GetBytes(content);
//req.ContentLength = data.Length;
//using (Stream reqStream = req.GetRequestStream())
//{
// reqStream.Write(data, 0, data.Length);
// reqStream.Close();
//}
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return result;
}