【发布时间】:2013-05-24 16:05:09
【问题描述】:
我正在尝试向使用 BASIC 身份验证和 https 保护的服务发送 HTTP GET 请求。如果我使用 RESTClient Firefox 插件来这样做没有问题。我正在定义基本标头并将 GET 发送到 url,我得到了答案(json 中的数据)。
现在我正在使用 C# 开发一个 Windows 应用商店应用程序,该应用程序旨在使用该服务。我在清单中启用了所有必需的功能并编写了以下方法:
private async void HttpRequest()
{
string basic = "Basic ...........";
Uri testuri = new Uri(@"https://...Servlet");
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", basic);
Task<HttpResponseMessage> response = client.GetAsync(testuri);
var text = await response;
var message = text.RequestMessage;
}
我尝试了许多不同的可能性,例如获取响应字符串,但一切都导致来自服务器的 401 状态代码回答。
我看了很多类似的问题,我对通信的理解如下:客户端请求->服务器响应401->客户端发送授权头->服务器响应200(OK)
我不明白为什么我会收到 401“未授权”状态码,尽管我一开始就发送了授权标头。如果有人知道在 RESTClient 中是如何处理的,那将会很有趣。
BASIC 标头绝对正确,我将其与 RESTClient 中的标头进行比较。
如果有人可以帮助我,那就太好了。
提前致谢和亲切的问候, 最大
【问题讨论】:
-
有趣...经过多次尝试,我终于找到了我不太了解的解决方案。使用 CredentialCache 而不是自己的 auth-header 或标准 Credential-class 解决了这个问题。
标签: c# basic-authentication dotnet-httpclient http-status-code-401