过程性 HttpWebRequest

Procedural HttpWebRequest

所以我首先要说的是,当涉及到 HttpWebRequesting 时,我是非常新的和基础的。我有一个我想自动化的调度程序。但是为了让我这样做,我必须按以下顺序执行以下所有操作:

1) 输入用户名和密码

1a)点击登录

2) Select 带有“2016”文本的单选按钮

2a) 点击继续

3) 重新输入密码

3a) 点击确定

4) 输入日程 ID

4a) 点击添加

毕竟,网站通常会在屏幕顶部显示一个绿色或红色标签,表示该项目是否安排正确。目前,我在 WebBrowser 控件中进行了所有这些工作,并且我正在删除每个项目的所有元素和属性,以检查它是否是输入数据的正确字段。然而,我最近听说使用 HttpRequests 会快得多。

经过一番研究,我came across this进行了身份验证。我在正确的轨道上吗??

有什么建议或提示吗??

你应该打开你的浏览器网络监视器看看请求的方法是什么 已经使用传递参数的名称并在你的 HttpWebRequest object 中模拟它,我假设你已经知道如何做 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 object, respStr 现在是服务器文本响应,您还可以在请求中发送额外的 headers(如果需要使用 req.Headers.AddHeader()),或设置 user-agent 或更改 content-type,等等,这取决于您在网络监视器中找到的内容,或者您​​可以使用 fiddler.

等桌面应用程序