C# HttpWebRequest不保留查询字符串编码

C# HttpWebRequest不保留查询字符串编码,c#,.net,http,encoding,C#,.net,Http,Encoding,发送以下请求(注意查询字符串中的编码id),但服务器只得到“law”。你知道我遗漏了什么吗 string url = "http://localhost/api/cms/content/?id=law&Order@the#house!"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; using (HttpWebResponse response

发送以下请求(注意查询字符串中的编码id),但服务器只得到“law”。你知道我遗漏了什么吗

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)
{
    ...
}

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

有关如何正确写入URL的信息,请参见

.content/?id=law%26订单%40%23房屋%21

1实际规则稍微复杂一些(即
@
不需要编码),因为“在特定上下文中没有保留目的的保留字符也可以进行百分比编码,但在语义上与未进行编码的保留字符没有区别”


有关详细信息,请参阅which提供了关于如何正确构建URL的良好评论和一些指导原则。

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

!   #   $   &   '   (   )   *   +   ,   /   :   ;   =   ?   @   [   ]
%21 %23 %24 %26 %27 %28 %29 %2A %2B %2C %2F %3A %3B %3D %3F %40 %5B %5D
有关如何正确写入URL的信息,请参见

.content/?id=law%26订单%40%23房屋%21

1实际规则稍微复杂一些(即
@
不需要编码),因为“在特定上下文中没有保留目的的保留字符也可以进行百分比编码,但在语义上与未进行编码的保留字符没有区别”

有关详细信息,请参阅其中提供了有关如何正确构造URL的良好评论和一些指导原则

!   #   $   &   '   (   )   *   +   ,   /   :   ;   =   ?   @   [   ]
%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
在这里,您应该如何将其编码为查询字符串

以下是您的案例:

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

请确保在url中对您的字符进行编码

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

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

请检查此url plz


请确保在url中对您的字符进行编码

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

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

请检查此url plz

问题不是“查询字符串编码”-而是XML/HTML实体转义 像这样使用它:

stringurl=”http://localhost/api/cms/content/?id=law&Order@“房子!”问题不是“查询字符串编码”-而是XML/HTML实体转义
像这样使用它:


stringurl=”http://localhost/api/cms/content/?id=law&Order@“房子!”
System.Net.WebUtility.UrlEncode(“法律&order@the#house!”)
System.Net.WebUtility.UrlEncode(“法律&order@the#house!)
这不起作用,因为“&”是一个有效的查询参数分隔符。这不起作用,因为“&”是一个有效的查询参数分隔符。所有答案都很好。我接受这个。我会投他们所有人的票,但分数不够。所有答案都是好的。我接受这个。我会投他们所有人的票,但没有足够的分数。