我正在尝试使用 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/