具有基本身份验证的C#Windows应用商店HTTP HTTPClient导致401"未经授权"

0 c# basic-authentication http-status-code-401 dotnet-httpclient

我正在尝试向使用BASIC身份验证和https保护的服务发送HTTP GET请求.如果我使用RESTClient Firefox插件这样做没有问题.我正在定义basic-header并将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;
        }
Run Code Online (Sandbox Code Playgroud)

我尝试了许多不同的可能性,例如获取响应字符串但是所有内容都会导致服务器发出401状态代码答案.

我查看了许多类似的问题,我对通信的理解如下:客户端请求 - >服务器响应401 - >客户端发送授权标头 - >服务器响应200(确定)

我不明白为什么我得到401"未授权"状态代码,虽然我在开始时发送授权标题.如果有人知道如何在RESTClient中处理它,那将会很有趣.

BASIC标题是完全正确的我将它与RESTClient中的标题进行比较.

如果有人可以帮助我,这将是很好的.

在此先感谢您的亲切问候,Max

小智 6

有一个类似的问题,我向HttpClient添加了一个HttpClientHandler.

var httpClientHandler = new HttpClientHandler();
httpClientHandler.Credentials = new System.Net.NetworkCredential("","")
var httpClient = new HttpClient(httpClientHandler);
Run Code Online (Sandbox Code Playgroud)