设置HttpClient的授权头

本文关键字:授权 HttpClient 设置 | 更新日期: 2023-09-27 18:09:27

我有以下代码,我想设置post请求的授权如下:

Authorization:key=somevalue

using (HttpClient client = new HttpClient())
{
     using (StringContent jsonContent = new StringContent(json))
     {
         jsonContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
         using (HttpResponseMessage response = await client.PostAsync("https://android.googleapis.com/gcm/send", jsonContent))
         {
            var reponseString = await response.Content.ReadAsStringAsync();
         }
     }
}

如何做到这一点?我真的很挣扎以及下面的语句

client.DefaultRequestHeaders.Add("Authorization", "key=" + apiKey);

抛出以下异常

类型为'System '的异常。FormatException'发生在System.Net.Http.dll,但未在用户代码

中处理

设置HttpClient的授权头

我通过下面一行代码解决了这个问题。

client.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("key", "=" + apiKey);

不确定这是否仍在运行,但基本认证密钥和64哈希认证密钥将被添加到类似REST调用的东西中,如:

var httpClient2 = new HttpClient();
var uri = new Uri("<someuri>");
var tokenKey = "<sometokenkey>");
var httpContent = new StringContent("<some body or serialized thing>", System.Text.Encoding.UTF8, "application/json");
httpClient2.BaseAddress = new Uri(uri);
httpClient2.DefaultRequestHeaders.Accept.Clear();
httpClient2.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
httpClient2.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", tokenKey);
response = await httpClient2.PostAsync(uri, httpContent);

我有同样的问题,我使用:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endPoint);
request.Headers["Authorization"] = "Basic jMxMTgwMWUzYWFkYTk4NjM2MjcyOTk3MDowYTU0N2I2NzliNWRkMjliN2I4NTFlMDBkY2Y2NjQzNzQ5OTIxYzZl";

其中Basic后面的字符串是来自Postman的编码字符串,选项为'code'。

我希望这对你有帮助!