c#使用特殊字符发送请求会干扰字符串

c#使用特殊字符发送请求会干扰字符串,c#,.net,httpwebrequest,request,C#,.net,Httpwebrequest,Request,我从解决方案中的一个项目向另一个项目发送请求: WebRequest request = WebRequest.Create(UrlTemplate); request.Timeout = 500000; request.Method = WebRequestMethods.Http.Post; request.ContentType = ContentType; byte[] postData = System.Text.Encoding.ASCII.GetBytes(data); reque

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

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

我在函数中得到的是:
1234


我很高兴知道这件事是否发生在你们当中的一些人身上,以及你们是如何解决的。提前感谢。

在形成URLMETPLATE时,使用
System.Web.HttpUtility.UrlEncode
System.Net.WebUtility.UrlEncode
,问题是因为字符串正在生成。(如果这只是一个GET,我会说它是URL编码的,但您使用的是POST。)符号&在URL中有一个特殊的含义,+符号被用作空格的替代


有关规格,请参阅。如果要获得预期的结果,需要使用手动编码这些内容。

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

see@parparpar您是否考虑过标记一个字符作为答案?对不起,我刚才看到了。好的,现在我明白了为什么会发生这种情况,但是
urlcoder
在函数中为空。。。还有一件事-我需要这种形式的发送,因为它被项目中的其他函数使用。有没有办法强迫特定字符串保持这样的状态?谢谢,我只是误解了你给出的
UrlEncode
。。。现在我使用的是
HttpUtility.UrlEncode
,这完全解决了这个问题。再次感谢您的详细回答。