Pur*_*ome 3 .net c# http-headers dotnet-httpclient
鉴于以下System.Net.Http.HttpClient Portable Class Library引发异常:
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("Authorization", "aaaa,bbbb");
Run Code Online (Sandbox Code Playgroud)
例外情况是:格式无效
在
1 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, IEnumerable/Developer/MonoTouch/Source/mono/mcs/class/System.Net.Http/System.Net.Http 中的System.Net.Http.Headers.HttpHeaders.AddInternal(System.String name,IEnumerable 1 values)[0x00011] .Headers/HttpHeaders.cs:170位于/ Developer/MonoTouch/Source/mono/mcs/class/System中的System.Net.Http.Headers.HttpHeaders.Add(System.String name,System.String value)[0x00000]. Net.Http/System.Net.Http.Headers/HttpHeaders <... snip ...>
现在这只发生在以下情况
标题键= Authorization.如果你把它改成其他任何东西,那没关系.值=必须有逗号.
现在,这个先前的SO问题表明逗号是在标题中粘贴多个值的正确方法.
谁能解释一下发生了什么?
注意:这是在Xamarin上,所以我猜它是单声道的.不确定这是否重要.
更新:
这是一张照片.

"它使用一个可扩展的,不区分大小写的令牌来识别身份验证方案,然后是逗号分隔的属性 - 值对列表,其中包含通过该方案实现身份验证所需的参数."
但其中暗示你很可能错误地设置它们,它们必须是"属性 - 值对"的形式:
auth-param = token "=" ( token | quoted-string )
Run Code Online (Sandbox Code Playgroud)
你究竟是如何设置它们的?
httpClient.DefaultRequestHeaders.Add("Authorization", "aaaa,bbbb");
Run Code Online (Sandbox Code Playgroud)
以上看似无效,它们不是属性对"aaaa,bbbb".您尝试设置的任一属性都没有=符号.
尝试以下测试:
httpClient.DefaultRequestHeaders.Add("Authorization", "aaaa=1234,bbbb=45678");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3496 次 |
| 最近记录: |