【问题标题】:How to get a User-Agent header to access GitHub API using C#如何使用 C# 获取 User-Agent 标头以访问 GitHub API
【发布时间】:2019-02-27 08:31:40
【问题描述】:

我正在尝试制作一个小型应用程序以将 GitHub API 的结果获取到文本文件。首先我试图将数据获取到控制台。我尝试了很多方法以及引用了许多文档,但我找不到方法来解决这个问题。

https://api.github.com/users/user?client_id=8763c42f48201b31115f&client_secret=4708b9aea8e35878b9748a016198b81de24352a4 行政规则禁止的请求。请确保您的请求具有 User-Agent 标头 (http://developer.github.com/v3/#user-agent-required)。检查https://developer.github.com 是否有其他可能的原因

这是我使用的示例代码。谁能帮我解决关于User-Agent header的问题

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            GetGameData().Wait();     
        }
        public static async Task<string> GetGameData()
        {

            var url = "https://api.github.com/users/user?client_id=8763c42f48201b31115f&client_secret=4708b9aea8e35878b9748a016198b81de24352a4";
            using (HttpClient client = new HttpClient())
            {
                    client.BaseAddress = new Uri(url);
                    Console.WriteLine(client.BaseAddress);
                    HttpResponseMessage response = await client.GetAsync(url);
                    string strResult = await response.Content.ReadAsStringAsync();
                    Console.WriteLine(strResult);
                    return strResult;
            } 
        }

    }
}

【问题讨论】:

  • client.DefaultRequestHeaders.Add("User-Agent", @"Mozilla/5.0 (Windows NT 10; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0");
  • 我将它添加到代码中,但仍然出现相同的错误
  • 尝试添加:ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 作为GetGameData() 方法的第一行。
  • 我再次发现同样的错误。
  • 在您呈现的代码的当前状态下 - 如果那是您的实际代码 - 这可能是您可以尝试的全部。您需要添加HttpClientHandler 和其他缺失部分。此外,这并不是传递 Auth Token 的真正方式。在 SO 中搜索有关如何在 OAuth2 场景中使用 HttpClient 类进行令牌身份验证的示例。你会发现很多。

标签: c# github-api


【解决方案1】:

对于使用 HttpClient,Jimi 的评论对我有用:

client.DefaultRequestHeaders.Add("User-Agent", @"Mozilla/5.0 (Windows NT 10; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0");

这个问题的例子使用了HttpClient,但是如果你想使用WebClient,请看这个问题:Setting the User-Agent header for a WebClient request

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多