问题:
使用“ 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}\r\n{2}:{3}\r\n{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的相关配置。
时间: 2024-10-28 11:19:34