c# - System.Net.Http.HttpClient 实例在设置逗号时抛出异常。为什么?

标签 c# .net http-headers dotnet-httpclient

给定以下 System.Net.Http.HttpClient Portable Class Library 引发异常:

var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("Authorization", "aaaa,bbbb");

异常(exception)情况是:格式无效

at System.Net.Http.Headers.HttpHeaders.AddInternal (System.String name, IEnumerable1 values, System.Net.Http.Headers.HeaderInfo headerInfo, Boolean ignoreInvalid) [0x0004c] in /Developer/MonoTouch/Source/mono/mcs/class/System.Net.Http/System.Net.Http.Headers/HttpHeaders.cs:195 at System.Net.Http.Headers.HttpHeaders.Add (System.String name, IEnumerable1 values) [0x00011] in /Developer/MonoTouch/Source/mono/mcs/class/System.Net.Http/System.Net.Http.Headers/HttpHeaders.cs:170 at System.Net.Http.Headers.HttpHeaders.Add (System.String name, System.String value) [0x00000] in /Developer/MonoTouch/Source/mono/mcs/class/System.Net.Http/System.Net.Http.Headers/HttpHeaders < ... snip ...>

现在这只发生在下面

header key = 授权。如果您将其更改为其他任何内容,则可以。 Value = 中必须有一个逗号。

现在,这个之前的 SO 问题表明逗号是在 header 中粘贴多个值的正确方法。

谁能解释一下这是怎么回事?

注意:这是在 Xamarin 上进行的,所以我猜它是单声道的。不确定这是否重要。

更新:

这是它的照片。

enter image description here

最佳答案

根据 this links spec rfc2617,用逗号分隔似乎有效。

“它使用可扩展的、不区分大小写的 token 来标识身份验证方案, 后跟逗号分隔的属性值对列表 通过它携带实现身份验证所需的参数 计划。”

但它表明你很可能设置不正确,它们必须是“属性值对”的形式:

auth-param     = token "=" ( token | quoted-string )

你究竟是如何设置它们的?

httpClient.DefaultRequestHeaders.Add("Authorization", "aaaa,bbbb");

以上看似无效,它们不是属性对“aaaa,bbbb”。您尝试设置的任一属性都没有 = 号。

尝试以下作为测试:

httpClient.DefaultRequestHeaders.Add("Authorization", "aaaa=1234,bbbb=45678");

关于c# - System.Net.Http.HttpClient 实例在设置逗号时抛出异常。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21824775/

相关文章:

c# - 如何从我的 Gmap.NET 获取位置信息?

c# - 在 .NET Core 控制台应用程序 C# 中播放音频

c# - 从不同的线程关闭主应用程序

c# - 如何从另一个 .ascx 中的 .ascx 获取变量?

Apache根据不同的域添加请求头

javascript - 无法弄清楚为什么我不断收到 [ERR_HTTP_HEADERS_SENT] 错误

c# - 如何使用 Roslyn 独立分析从别名获取类型

.net - 检查并从字符串转换为日期 vb.net

C#/.NET XML 序列化程序 - 使用属性作为元素名称

httpwebrequest - 我可以通过 HTTP header 检测图像请求吗?