C# HttpClient返回违反协议的服务器-浏览器返回正确的数据
我正在尝试重新启动github的成员资格 如果我尝试从浏览器调用github api,比如 但是,如果我从.net尝试,我可以看到所有有效的json数据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
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
提供值,我怀疑问题是由它包含的值引起的