c# - 添加 HttpClient header 会生成具有某些值的 FormatException

标签 c# dotnet-httpclient google-cloud-messaging

这发生在针对 Google Cloud Messaging 进行编码的上下文中,但适用于其他地方。

考虑以下几点:

var http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("key=XXX");

var http = new HttpClient();
http.DefaultRequestHeaders.Add("Authorization", "key=XXX");

两者都会产生一个 FormatException:

System.FormatException : The format of value key=XXX' is invalid.

解决方案是去掉等号。

  1. 深入研究反射器表明在添加新 header 值时会运行大量验证和解析代码。为什么这一切都是必要的?这位客户不应该让开我们吗?

  2. 如何转义等号以便成功添加此值?

最佳答案

不确定是否仍然相关,但我最近遇到了同样的问题,并且能够通过调用不同的方法来添加 header 信息来解决它:

var http = new HttpClient();
http.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "key=XXX");

关于c# - 添加 HttpClient header 会生成具有某些值的 FormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13198090/

相关文章:

c# - 使用特定的 HttpMessageHandler 注入(inject)单实例 HttpClient

android - 将 GCM 升级到 FCM 服务器报告 MismatchSenderId 错误

android - 如何从 meteor 调用android GCM

c# - 如何将 EnumConverter 与 CsvHelper 一起使用

c# - 阅读文本的最后一行 2

c# - 如果我在测试时在 System.Web.UI.Util 处遇到异常,如何对我的 HtmlHelper 扩展方法进行单元测试?

c# - HttpClient爬取导致内存泄漏

c# - 如何返回来自 PI 的给定长度的 int 数组

c# - WP8 HttpClient.PostAsync 从不返回结果

php - Android Google 云消息传递 - 不确定在创建推送通知时我应该输入哪些参数