i从带有WebClient类的ASP.NET应用程序上在服务器(Oracle Reports)上运行查询。我没有服务器上的手,我只能访问一些日志。
在一种情况下,发送到服务器的查询字符串包含重音字符(é)。在发送请求之前,WebClient类Encode(URLENCODE)查询字符串(ÉSUES%C3%A9)。但是我的服务器不明白这个编码!
在与已知客户端进行了一些测试(IE 11和Chrome 32)之后,我发现IE 11不会编码查询字符串,而Chrome是。
在服务器上,我有http://myserver/reports/rwservlet?test=é
URL的以下日志:
IE : "GET / reports/rwservlet test=XE9 HTTP/1.1 ?"
Chrome : "GET /reports/rwservlet test=%C3%A9 HTTP/1.1 ?"
使用WebClient类,我的结果与Chrome相同。
从WebClient类使用时,我该怎么做才能使我的服务器接收与IE相同的URL?
我可以向WebClient类说以不urlencode我的参数值吗?还是我可以使用其他类以外的其他类?
谢谢!
换句话说,我必须从ASP.NET应用程序发送带有查询字符串的HTTP请求,未编码!我尝试使用WebClient和WebRequest,但是URL总是编码...
我无法与邮政方法一起使用:
string url = "http://myUrl.com/page";
string parameters = "param1=un¶m2=ooohyé"
byte[] bytes = Encoding.GetEncoding("ISO-8859-1").GetBytes(parameters);
WebRequest webRequest = WebRequest.Create(url);
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = bytes.Length;
Stream paramStream = webRequest.GetRequestStream();
paramStream.Write(bytes, 0, bytes.Length);
paramStream.Close();
WebResponse response = webRequest.GetResponse();