这发生在针对 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.
解决方案是去掉等号。
深入研究反射器表明在添加新 header 值时会运行大量验证和解析代码。为什么这一切都是必要的?这位客户不应该让开我们吗?
如何转义等号以便成功添加此值?
最佳答案
不确定是否仍然相关,但我最近遇到了同样的问题,并且能够通过调用不同的方法来添加 header 信息来解决它:
var http = new HttpClient();
http.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "key=XXX");
关于c# - 添加 HttpClient header 会生成具有某些值的 FormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13198090/