我需要调用的Web服务的URL包含一个包含自由格式文本的参数。我不确定为什么要这样设计,因为它是使用POST发送的,并且包含许多字段作为POST的一部分。但是,这给我带来了问题。对于某些字符,例如井号和,当遇到问题字符时,URL将被截断。我正在对参数的文本进行HTML编码,但问题仍然存在。我可以看到诸如>之类的特殊字符已被编码为gt;之类的东西。我认为编码字符串中的分号某种程度上是一个问题。我在服务器上放了一个嗅探器,以接收传入的请求,然后看到URL被截断了。在服务器上,我看到类似以下内容: ...?extraData=kjfkfjslkj代替: ...?extraData=kjfkfjslkj#kfjkdlsfj代码是这样的: using System.Web; .... String strExtra="kjfkfjslkj#kfjkdlsfj"; strURL = strStuff + "?extraData=" + System.Web.HttpUtility.HtmlEncode(strExtra); HttpWebRequest oRequest = (HttpWebRequest)WebRequest.Create(new Uri(strURL)); oRequest.Method = httpMethod; oRequest.ContentType = "application/atom+xml"; ... using (WebResponse oResponse = oRequest.GetResponse()) { ... } (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 井号(#)之后的所有内容都不会发送到服务器。浏览器和页面上的脚本使用它来表示页面上的位置或其他含义。删除哈希符号或对其进行URL编码(%23),以将其发送到服务器。这行:strURL = strStuff + "?extraData=" + System.Web.HttpUtility.HtmlEncode(strExtra);应该strURL = strStuff + "?extraData=" + Server.UrlEncode(strExtra);在url中使用数据时,html的编码无用。 (adsbygoogle = window.adsbygoogle || []).push({});
10-02 02:55