C# 设置HttpClient的授权头

C# 设置HttpClient的授权头,c#,authorization,httpclient,httpcontent,C#,Authorization,Httpclient,Httpcontent,我有以下代码,我想设置post请求的授权如下: Authorization:key=somevalue using (HttpClient client = new HttpClient()) { using (StringContent jsonContent = new StringContent(json)) { jsonContent.Headers.ContentType = new MediaTypeHeaderValue("applicatio

我有以下代码,我想设置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,但未在用户代码中处理


我通过以下代码行解决了这个问题

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

我也有同样的问题,我用以下方法解决:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endPoint);

request.Headers["Authorization"] = "Basic jMxMTgwMWUzYWFkYTk4NjM2MjcyOTk3MDowYTU0N2I2NzliNWRkMjliN2I4NTFlMDBkY2Y2NjQzNzQ5OTIxYzZl";
如果
Basic
后面的字符串是来自Postman的编码字符串,则选项为“code”


我希望这有帮助

不确定这是否仍在运行,但基本身份验证密钥和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);
var-httpClient2=new-HttpClient();
var uri=新uri(“”);
var-tokenKey=“”);
var httpContent=newstringcontent(“,System.Text.Encoding.UTF8,“application/json”);
httpClient2.BaseAddress=新Uri(Uri);
httpClient2.DefaultRequestHeaders.Accept.Clear();
httpClient2.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
httpClient2.DefaultRequestHeaders.Authorization=新的AuthenticationHeaderValue(“基本”,令牌密钥);
response=wait-httpClient2.PostAsync(uri,httpContent);

您是否启用了首次机会例外?如果是这样,请将其关闭。我更愿意使用
FormUrlEncodedContent
来发送密钥和其他内容,就像我提交表单一样。根据HTTP客户端的存储方式,这可能不是线程安全的。将出现的错误是“已添加具有相同密钥的项”。我认为这不是相同的问题,因为您使用的是
HttpWebRequest
,而我使用的是
HttpClient