HttpWebRequest不保留查询字符串编码

时间:2014-12-29 22:00:55

标签: c# .net http encoding

发送以下请求(注意查询字符串中的编码id),但服务器只是“法律”。关于我缺少的任何想法?

string url = "http://localhost/api/cms/content/?id=law&Order@the#house!";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
    ...
}

4 个答案:

答案 0 :(得分:2)

问题是&不是“查询字符串编码” - 它是XML / HTML实体转义,服务器(正确)打破查询字符串中&的id参数。服务器关心URL,而不是XML。

请参阅Percent Encoding (aka URI encoding)了解如何正确 1 写下

的网址
..content/?id=law%26Order%40the%23house%21

1 实际规则有点复杂(即@!;不需要编码) - 如“在特定上下文中没有保留目的的保留字符也可能是百分比编码,但在语义上不同于那些不是”。

有关详细信息,请参阅What every web developer must know about URL encoding,其中提供了良好的评论以及有关如何正确构建网址的一些指南。

答案 1 :(得分:1)

!   #   $   &   '   (   )   *   +   ,   /   :   ;   =   ?   @   [   ]
%21 %23 %24 %26 %27 %28 %29 %2A %2B %2C %2F %3A %3B %3D %3F %40 %5B %5D

这里你应该如何编码查询字符串。

这里针对您的情况:

http://localhost/api/cms/content/?id=law%26Order%40the%23house%21

答案 2 :(得分:1)

请务必在网址中对您的字符进行编码

例如('&')是“%26”

这称为保留字符 喜欢 :  ! #$'()* +,/:; =? @ []

检查此网址plz

http://www.w3schools.com/tags/ref_urlencode.asp

答案 3 :(得分:0)

问题是&不是"查询字符串编码" - 它是一个XML / HTML实体 - 转义 像这样使用它:



string url = "http://localhost/api/cms/content/?id=law&Order@the#house!";




适合我