首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HttpRequestMessage UserAgent和Colon

HttpRequestMessage UserAgent和Colon
EN

Stack Overflow用户
提问于 2015-04-29 14:29:05
回答 1查看 4.7K关注 0票数 3

我试图发送一个请求,将其用户代理设置为带有冒号的东西,但HttpRequestMessage抱怨冒号是一个无效字符。

确切的代码如下所示:

代码语言:javascript
复制
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...

我查看了这是如此的帖子,您可以在其中看到用户代理和这个RFC的EBNF,它们指定了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 )

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-29 14:45:39

就像我怀疑的那样,这是一个逃跑的问题。HttpRequestMessage似乎不处理自动转义。

在将冒号添加到Uri.EscapeDataString()头之前,我可以使用它来转换冒号。在处理端点上的用户代理时,必须使用Uri.UnescapeDataString()

不太漂亮,但看起来很管用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29946698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档