解决使用webbrowser请求url时数据传递丢失问题

问题: 

使用“ this.webBrowser.Url = new Uri(webBrowserUrl);”方式请求Action(Java Web)并传递数据,在webBrowserUrl中携带的参数过长时,java web中接收到的数据值部分丢失。

原因

使用此方式请求url,相当于GET请求,而GET方法提交的数据有长度限制(由浏览器、服务器决定,HTTP GET方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制),故而在传递数据过长时会出现数据部分丢失问题。

解决方式

使用webBrowser.Navigate方法post提交数据。

eg:

1 string param="ssss=wwww&sss=dddddd";
2 byte[] postBuffer = new byte[param.Length];
3 postBuffer = System.Text.Encoding.UTF8.GetBytes(param);
4 string heads = string.Format("{0}:{1}
{2}:{3}
{4}:{5}", "Accept", "*/*", "Content-Type", "application/x-www-form-urlencoded", "User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1"
5 string tagerFrameName="";
6 this.webBrowser.Navigate(webBrowserUrl, tagerFrameName, postBuffer, heads);

注意:若想要在Action中使用request.getParameter方法获取传递的参数,必须要在heads中添加Content-Type的相关配置。

原文地址:https://www.cnblogs.com/ylhssn/p/5162740.html