GithubApi基本身份验证尝试获取数据时出错403

Boa*_*ler 2 basic-authentication github-api

当试图从github apir获取数据时,我得到了403.我想使用基本身份验证(用户名和密码).

我也尝试过没有凭据缓存并直接设置凭据,结果相同.

我究竟做错了什么?

    string url = "https://api.github.com/search/users?q=gentlehag"

    HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
    request.Method = "GET";
    request.Proxy = null;
    request.PreAuthenticate = true;

    var crds = new NetworkCredential(Username, Password); 
    CredentialCache myCredentialCache = new CredentialCache();
    myCredentialCache.Add(new Uri(url), "Basic", crds);
    request.Credentials = myCredentialCache;

    request.KeepAlive = false;
    request.Accept = "application/vnd.github.v" + Version + "+json";

    using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
    {
        using (StreamReader reader = new StreamReader(response.GetResponseStream()))
        {
            return reader.ReadToEnd();
        }

    }
Run Code Online (Sandbox Code Playgroud)

我也尝试在这样的hider中设置基本身份验证

 request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(Username + ":" + Password)));
Run Code Online (Sandbox Code Playgroud)

- >结果相同.

在配置中,我将下面的配置设置为不获取ProtocolViolationException

<system.net>
    <settings>
      <httpWebRequest useUnsafeHeaderParsing = "true"/>
    </settings>
 </system.net>
Run Code Online (Sandbox Code Playgroud)

Boa*_*ler 9

经过大量的游戏和挖掘octokit源代码后,我找到了解决方案.

我要设置一个使用者.

添加

request.UserAgent = "myTestApp";
Run Code Online (Sandbox Code Playgroud)

为我解决了.也许这可能会帮助别人