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会快得多。

在研究了一些之后,我遇到了这个验证。我的方向对吗?

有什么建议或提示吗?

Procedural HttpWebRequest

您应该打开浏览器网络监视器,看看请求的方法是什么已经使用了传递的参数的名称,并在你的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