我基本上来自java。但我应该修改一个c#应用程序。此应用程序将文本框的数据发送到服务器。(https连接)
一切正常。只有一个问题。如果文本框中的文本具有“+”字符,则在服务器端它们作为空格到达。意思是,如果文本框中包含“amit + gupta”,那么在服务器端它就会达到“amit gupta”。
*我担心可能会有一些其他组合可能会进一步引起问题。
代码
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
StringBuilder postData = new StringBuilder();
postData.Append("data1="+textBox4.Text);
postData.Append("&data2="+textBox5.Text);
byte[] data = encoding.GetBytes(postData.ToString());
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serverUrl);
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream = myRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
我的观察
根据我的理解,数据应该在发送到服务器之前首先进行URL编码。但...
缺少UrlEncode
Visual Studio 2008已经设置用于开发Windows应用程序。在这(我试过3台不同的机器),我找不到UrlEncode()。我也曾探索过System.Web但是: - (
我的问题;
答案 0 :(得分:3)
您正在System.Web
中寻找HttpUtility.UrlEncode。
这需要添加对System.Web.dll
的引用。如果您无法添加对该引用的引用,请确保您具有完整的配置文件(而不是客户端配置文件)。如果您需要客户端配置文件,则必须实现自己的编码功能。