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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决使用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}\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的相关配置。

以上是关于解决使用webbrowser请求url时数据传递丢失问题的主要内容,如果未能解决你的问题,请参考以下文章

非post请求时整个url作为参数传递出现bug

在使用get请求时,也可以向请求中传递url参数对吗?

如何修改使用C#的请求的HTTP头

http请求 url 传递参数(特殊字符)解决方法

Python Http 请求

如何将JSON Web令牌(JWT)传递给get请求