HttpClient不接受授权标头(401未经授权)吗?

时间:2018-06-28 06:56:11

标签: c# android api xamarin.forms

您好,我正在创建一个Xamarin.Forms移动应用程序,该应用程序将Android以.NET Standard作为我的代码共享方法。不幸的是,我使用的API在Postman中工作,但在System.Net.Http中使用HttpClient的C#中却无法工作。

邮递员请求使用以下标头工作:

Request Screenshot

我尝试了3种不同的方法,但是它们仍然返回“ 401未经授权”。我还检查了Android Manifest文件中的INTERNET权限。

HttpClient.DefaultRequestHeaders.Add("Authorization", "Token e2eeb1aa9f32eb0ekgn353b6fadb772");
HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Token", "e2eeb1aa9f32eb0ekgn353b6fadb772");
HttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "Token e2eeb1aa9f32eb0ekgn353b6fadb772");

3 个答案:

答案 0 :(得分:1)

请确保您的HTTP请求 URL 是否正确。有时您可能需要在结尾加上反斜杠('/')。 如果您在 HTTP客户端中错过了它,它将无法工作,但是 POSTMAN 将。

答案 1 :(得分:0)

尝试在HttpRequestMessage上设置标题:

request.Headers.Authorization = new 
    AuthenticationHeaderValue("Bearer","e2eeb1aa9f32eb0ekgn353b6fadb772");

答案 2 :(得分:0)

以我为例,当我在AuthenticationHeaderValue中设置基本身份验证时,此问题已修复。

var authToken = Encoding.ASCII.GetBytes(_UserName + ":" + _Password);
client.DefaultRequestHeaders.Authorization= new AunthenticationHeaderValue("Basic", Convert.ToBase64String(authToken));