.net - 将自定义字符串放入 System.Net.HttpClient 的 "Authorization" header 中

标签 .net dotnet-httpclient google-cloud-messaging

我正在尝试使用 System.Net.HttpClient类将消息发布到 Google Cloud Messaging。

Google Cloud Message 要求您包含一个名为“Authorization”的 header ,格式类似于:

key=AIzaSyBxFuZ9IbtGbJHX6F5wdTc1mHnB7i0Lu8D

但是HttpClient当我尝试这个时,类会抛出异常。
string keyString = "key=AIzaSyBxFuZ9IbtGbJHX6F5wdTc1mHnB7i0LJ0w";
using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Add("Foo", keyString); // <== Proving I can
    client.DefaultRequestHeaders.Add("Authorization", keyString); // Exception thrown

异常(exception)是类型 System.FormatException .消息是

The format of value 'key=AIzaSyBxFuZ9IbtGbJHX6F5wdTc1mHnB7i0LJ0w' is invalid.



调用堆栈是:
at System.Net.Http.Headers.HttpHeaderParser.ParseValue(String value, Object storeValue, Int32& index)
at System.Net.Http.Headers.HttpHeaders.ParseAndAddValue(String name, HeaderStoreItemInfo info, String value)
at System.Net.Http.Headers.HttpHeaders.Add(String name, String value)

如何在不抛出异常的情况下将此 header 放入此帖子请求中?

顺便说一句,我用 Fiddler 写了一个这样的帖子,它有效:

标题:
User-Agent: Fiddler
Authorization: key=AIzaSyBxFuZ9IbtGbJHX6F5wdTc1mHnB7i0Lu8D
Host: android.googleapis.com
Content-Length: 220
Content-Type: application/json

请求正文:
{
 "registration_ids" : ["APA91bEM6XPdiZv5VgNNApakfyYfZwB871018Hljl1L27kaPvksasnR0bHlmcCZFxOSPD6bDLMZgvgfT9xsKnF6Tg0oSQM2cMM1KRbuK7cR7jICqAnSDYg_SvERTzPMT8puXGTlVkEVH6dsneBkXiBu6pZikWXWyRATAVbXnAHTe20-nQerb0"],
}

最佳答案

试试这个答案:

https://stackoverflow.com/a/24575721/1981387

似乎有点解决方法,因为它是一个字符串对而不是一个不错的对象,但它似乎有效。

关于.net - 将自定义字符串放入 System.Net.HttpClient 的 "Authorization" header 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23535047/

相关文章:

.net - 在 Windows 服务的上下文中删除和卸载有什么区别?

php - 从 GCM 中删除消息

c# - 如何通过智能卡进行身份验证作为 httpClint/httpListener 中 Windows 身份验证的回退

c# - RestSharp 忽略 .NET Core 上的系统代理(例如 Fiddler)

android - Xamarin 门户类库访问 ASP.NET Web ApiController

java - GCM 注销导致应用程序崩溃

php - 当应用程序未在 swift 中运行时,iOS 会收到来自 google GCM 的推送通知

.net - 如何在 .net 网站中创建一个始终在后台运行的线程?

c# - 仅具有管理员权限的 Windows Vista 中的浏览器帮助程序对象 (BHO)?

c# - 为什么 XML-Serializable 类需要无参数构造函数