我正在尝试在ASPX.NET网站上模拟表单提交。
在浏览器中访问网站时的流程如下:
1)在浏览器中,用户访问使用基本身份验证配置的http://mysite.com/
2)在正确的凭据后,将向用户显示一个带有一个输入文本框和一个按钮的表单(URL保持http://mysite.com/但正在提供的表单为Default.aspx)
3)用户输入一些文字并按提交...
4)网页重新加载...网址仍为http://mysite.com/ ...但有一个计时器会在10秒后触发并从http://mysite.com/Downloader下载文件
我正在尝试使用HTTPClient在我的程序中模拟此流程。
上进行GET2)提取隐藏的表单字段__EVENTVALIDATION和__VIEWSTATE
3)创建一个包含上述两个和其他表单字段的POST请求,并将其发送到http://mysite.com结果在无效的Viewstate异常中。
如何在HTTPClient中实现此目的?
答案 0 :(得分:3)
通常的做法如下:首先,在浏览器中使用网站时,使用WireShark或Fiddler记录HTTP流量。其次,详细分析数据包跟踪,并从浏览器发送的每个GET和POST消息中收集每个HTTP头和每个HTTP有效负载。第三,尝试从您的代码发送相同的消息。发送HTTP请求后,您必须分析服务器的响应,并提取您需要插入到下一个请求中的所有数据。例如,不要忘记设置referer字段。将每个请求逐个添加到您的代码中,并在运行代码时记录流量。如果正确组合HTTP请求,那么您的请求数据包应该类似于浏览器的请求。
答案 1 :(得分:0)
我在同一场景中,我必须为外部ASPX页面创建一个POST请求。 我使用FIDDLER捕获了流量,并尝试使用在线帖子请求工具(例如https://www.codepunker.com
)来模拟通话我无法重新创建请求...
在我看来(这需要时间)我们必须:
注意:您可能需要使用接受cookie的web客户端,请检查:
祝你好运