Procedural HttpWebRequest
本文关键字:HttpWebRequest Procedural | 更新日期: 2023-09-27 18:18:19
所以我首先要说的是,当涉及到httpwebrequestiing时,我是非常新的和基本的。我有一个日程安排程序,我想自动化。但是为了让我这样做,我必须按照这个顺序完成以下所有操作:
1)输入用户名和密码
1)点击登录
2)选择带有"2016"字样的单选按钮2)打击继续
3) reenter password
3a)点击确定
4)输入schedule ID
4a)点击添加
在所有这些之后,网站通常在屏幕顶部显示一个绿色或红色的标签,表示项目是否被安排正确。目前,我已经与WebBrowser控件一起工作,并且我正在清除每个项目的所有元素和属性,以检查它是否是输入数据的适当字段。然而,最近有人告诉我,使用httprequest会快得多。
在研究了一些之后,我遇到了这个验证。我的方向对吗?
有什么建议或提示吗?您应该打开浏览器网络监视器,看看请求的方法是什么已经使用了传递的参数的名称,并在你的HttpWebRequest
对象中模拟,我假设你已经知道如何做GET
方法,以下是如何使用HttpWebRequest
进行基本的POST
请求
var cookies = new CookieContainer();
var req = (HttpWebRequest)WebRequest.Create("https://example.com/login");
req.CookieContainer = cookies;
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
var buffer = Encoding.UTF8.GetBytes("user=foo&pass=bar"); //passed params
req.ContentLength = buffer.Length;
using (var reqStream = req.GetRequestStream()) {
reqStream.Write(buffer, 0, buffer.Length);
}
using (var res = req.GetResponse())
using (var resStream = res.GetResponseStream())
using (var reader = new StreamReader(resStream)) {
var respStr = reader.ReadToEnd();
}
,你应该对所有的请求使用相同的CookieContainer
对象,respStr
现在是服务器文本响应,您也可以在请求中发送额外的头(如果需要,使用req.Headers.AddHeader()
),或者设置用户代理或更改内容类型等,这取决于您在网络监视器中找到的内容,或者您可以使用桌面应用程序,如fiddler
。