4

我从解决方案中的一个项目向另一个项目发送请求:

WebRequest request = WebRequest.Create(UrlTemplate);
request.Timeout = 500000;
request.Method = WebRequestMethods.Http.Post;
request.ContentType = ContentType;
byte[] postData = System.Text.Encoding.ASCII.GetBytes(data);
request.ContentLength = postData.Length;
Stream newStream = request.GetRequestStream();
// Send the data.
newStream.Write(postData, 0, postData.Length);
newStream.Flush();
newStream.Close();

好吧,在我设置的函数中,UrlTemplate我得到了正确的字符串(我在数据中发送),但是当字符串包含特殊字符时问题就开始了。

如果字符串是:12&34

我在函数中得到的是:12.

如果字符串是:12+34

我在函数中得到的是:12 34.

我很高兴知道你们中的一些人是否发生过这种情况以及你们是如何解决的。预先感谢。

4

3 回答 3

7

在形成 UrlTemplate 时使用System.Web.HttpUtility.UrlEncodeSystem.Net.WebUtility.UrlEncode

于 2013-01-01T16:18:37.520 回答
2

该问题是由于字符串是url-form Encoded引起的。(如果这只是一个 GET,我会说它是 URL 编码的,但您使用的是 POST。) & 符号在 URL 中具有特殊含义,而 + 符号用作空格的替换。

有关规范,请参见http://www.w3.org/TR/html401/interact/forms.html#h-17.13.3.3。如果您想获得您期望的结果,您需要使用UrlEncode()手动对这些进行编码。

于 2013-01-01T16:20:07.460 回答
1

在您的密码中使用 URI.EscapeDataString() 方法。它将帮助您正确阅读您的特殊字符。

于 2014-09-12T10:37:34.427 回答