8

我有以下代码,我想将发布请求的授权设置为:

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.Net.Http.dll 中出现“System.FormatException”类型的异常,但未在用户代码中处理

4

3 回答 3

24

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

client.DefaultRequestHeaders.Authorization =
       new AuthenticationHeaderValue("key", "=" + apiKey);
于 2015-08-23T15:00:43.433 回答
2

不确定这是否仍在运行,但基本身份验证密钥和类似 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);
于 2021-05-19T14:16:45.560 回答
0

我遇到了同样的问题,我使用以下方法解决了:

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

request.Headers["Authorization"] = "Basic jMxMTgwMWUzYWFkYTk4NjM2MjcyOTk3MDowYTU0N2I2NzliNWRkMjliN2I4NTFlMDBkY2Y2NjQzNzQ5OTIxYzZl";

其中后面的字符串Basic是来自 Postman 的编码字符串,选项是“代码”。

我希望这有帮助!

于 2020-08-03T14:16:58.143 回答