我尝试将其用户代理设置为带冒号的请求发送,但HttpRequestMessage
抱怨冒号是无效字符。
确切的代码如下所示:
HttpClient client = new HttpClient();
var request = new HttpRequestMessage()
{
RequestUri = new Uri("some-uri"),
Method = HttpMethod.Post
};
request.Headers.Add("User-Agent", "Sample:Text");
// then send the request...
我浏览了this SO post,您可以看到用户代理的EBNF和this RFC,它指明了CTL是什么。
第一个链接表示以下是有效的用户代理:
token = 1*<any CHAR except CTLs or separators>
第二个链接将CTL定义为:
any US-ASCII control character (octets 0 - 31) and DEL (127)
但是,冒号(:
)在ASCII表上是58,所以我不明白为什么这是一个问题。
我认为HttpRequestMessage
不喜欢其中的冒号,因为它没有被转义 - 它可能认为它是一个分隔符。但我尝试用单引号,双引号等来逃避它。
有没有办法摆脱它我失踪了?
或者换句话说,如何在:
的用户代理标头中正确发送冒号(HttpRequestMessage
)?