加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – System.Net.Http.HttpClient实例在设置逗号时抛出异常.为

发布时间:2020-12-16 02:00:05 所属栏目:百科 来源:网络整理
导读:鉴于以下System.Net.Http.HttpClient可移植类库引发异常: var httpClient = new HttpClient();httpClient.DefaultRequestHeaders.Add("Authorization","aaaa,bbbb"); 例外情况是:格式无效 at System.Net.Http.Headers.HttpHeaders.AddInternal (System.Str
鉴于以下System.Net.Http.HttpClient可移植类库引发异常:

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

例外情况是:格式无效

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,
IEnumerable
1 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 …>

现在这只发生在以下情况

标题键=授权.如果你把它改成其他任何东西,那没关系.
值=必须有逗号.

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

谁能解释一下发生了什么?

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

更新:

这是一张照片.

解决方法

根据 this links spec rfc2617用逗号分隔似乎确实有效.

“它使用可扩展,不区分大小写的令牌来识别身份验证方案,
???后跟逗号分隔的属性 – 值对列表
???通过它携带实现认证所需的参数
???方案.”

但其中暗示你很可能错误地设置它们,它们必须是“属性 – 值对”的形式:

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

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

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

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

尝试以下测试:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读