.Net rest api调用不起作用

时间:2016-04-20 11:55:53

标签: c# .net rest authentication rest-security

我正在尝试连接到发送json响应的rest api。当我在浏览器中复制粘贴网址时。浏览器会弹出一个输入用户名和密码。

在输入用户名和密码(活动目录ID和密码)时,服务会发送JSON响应。 Http request and Response

但是尝试从代码连接时,它会返回以下错误

  

{StatusCode:401,ReasonPhrase:'Unauthorized',版本:1.1,内容:   System.Net.Http.StreamContent,Headers:{Keep-Alive:timeout = 15,   最大= 100连接:保持活动日期:2016年4月20日星期三,格林威治标准时间11:38:45   服务器:Apache WWW-Authenticate:Basic realm =“使用您的登录   AD-ENT凭据,但不要在您的ID前添加域“
  内容长度:455内容类型:text / html; charset = iso-8859-1}}

HttpClient client = new HttpClient();
client.BaseAddress = new Uri(@"http://pro.abc.com/services/");

var authData = string.Format("{0}:{1}","username", "password");
var authHeaderValue = Convert.ToBase64String(Encoding.UTF8.GetBytes(authData));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authHeaderValue);

HttpResponseMessage response = await client.GetAsync("reportpro/reports/11824");

1 个答案:

答案 0 :(得分:0)

代码很完美,唯一的问题是我使用的是http而不是https。

在浏览器中复制粘贴网址时,浏览器正在将http转换为https。因此它在浏览器中完美运行。

在代码中将http更改为https后,效果非常好。

HttpClient client = new HttpClient();
client.BaseAddress = new Uri(@"https://pro.abc.com/services/");