gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:10:56 24 4
gpt4 key购买 nike

给定以下 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,
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 ...>

现在这只发生在下面

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com