Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpClient返回违反协议的服务器-浏览器返回正确的数据_C#_Webclient - Fatal编程技术网

C# HttpClient返回违反协议的服务器-浏览器返回正确的数据

C# HttpClient返回违反协议的服务器-浏览器返回正确的数据,c#,webclient,C#,Webclient,我正在尝试重新启动github的成员资格 如果我尝试从浏览器调用github api,比如 但是,如果我从.net尝试,我可以看到所有有效的json数据 public ActionResult Index() { var url = "https://api.github.com/user?access_token=XXXXXXXX"; ////add additional params //if (additionalParams

我正在尝试重新启动github的成员资格

如果我尝试从浏览器调用github api,比如

但是,如果我从.net尝试,我可以看到所有有效的json数据

  public ActionResult Index()
    {
        var url = "https://api.github.com/user?access_token=XXXXXXXX";
        ////add additional params
        //if (additionalParams != null)
        //{
        //    foreach (string key in additionalParams)
        //    {
        //        url += string.Format("&{0}={1}", key, additionalParams[key]);
        //    }
        //}

        HttpClient client = new HttpClient();
        var result =  client.GetAsync(url).Result;
        if (result.IsSuccessStatusCode)
        {
            var json =  result.Content.ReadAsStringAsync().Result;
            var profile = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
            //return GetClaimsFromProfile(profile);
        }
        return View();
    }
public ActionResult Index()
{
变量url=”https://api.github.com/user?access_token=XXXXXXXX";
////添加其他参数
//if(additionalParams!=null)
//{
//foreach(附加参数中的字符串键)
//    {
//url+=string.Format(“&{0}={1}”,key,additionalParams[key]);
//    }
//}
HttpClient=新的HttpClient();
var result=client.GetAsync(url.result);
if(结果。IsSuccessStatusCode)
{
var json=result.Content.ReadAsStringAsync().result;
var profile=Newtonsoft.Json.JsonConvert.DeserializeObject(Json);
//返回GetClaimsFromProfile(profile);
}
返回视图();
}
我犯了一个错误

服务器违反了协议。区段=响应STATUSLINE

HttpClient不喜欢我正在尝试的东西是什么?我是否需要提供浏览器为我所做的额外详细信息

任何帮助都将不胜感激

添加

<system.net>
    <settings>
      <httpWebRequest useUnsafeHeaderParsing="true" />
    </settings>
  </system.net>


我的web.config似乎解决了这个问题……我真的不明白为什么我需要添加这个,但它是有效的。

不确定它是否与此相关,但我在端点上遇到了同样的问题。我的解决方案比我想象的要简单,但却很烦人,因为我花了好几个小时才找到答案


用户代理
应该传递给API端点,也许它在这里也可以通过指定
用户代理

来工作。您查看了最终的url了吗?可能有换行符或非法字符吗?最终的url看起来不错,例如上面的示例,我将url更改为硬编码字符串,但这是代码中的实际值实际值是多少?您没有为
additionalParams
提供值,我怀疑问题是由它包含的值引起的