我正在尝试连接到发送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");
答案 0 :(得分:0)
代码很完美,唯一的问题是我使用的是http而不是https。
在浏览器中复制粘贴网址时,浏览器正在将http转换为https。因此它在浏览器中完美运行。
在代码中将http更改为https后,效果非常好。
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(@"https://pro.abc.com/services/");