带冒号的HttpRequestMessage UserAgent

时间:2015-04-29 14:29:06

标签: c# .net

我尝试将其用户代理设置为带冒号的请求发送,但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)?

0 个答案:

没有答案