程序性HttpWebRequest

时间:2015-10-17 20:15:47

标签: c# http httpwebrequest httpwebresponse

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

1)输入用户名和密码

1a)点击登录

2)选择带有“2016”文字的单选按钮

2a)点击继续

3)重新输入密码

3a)点击确定

4)输入计划ID

4a)点击添加

毕竟,网站通常会在屏幕顶部显示绿色或红色标签,表示该项目是否正确安排。目前,我已经将所有这些与WebBrowser控件一起使用,并且我正在清除每个项目的所有元素和属性,以检查它是否是输入数据的正确字段。但是,我最近被告知使用HttpRequests要快得多。

在研究了一些之后,我came across this进行身份验证。我是在正确的轨道吗?

有任何建议或提示吗?

1 个答案:

答案 0 :(得分:0)

你应该打开浏览器网络监视器,看看请求的方法是什么 使用了传递参数的名称并在HttpWebRequest对象中模拟,我假设您已经知道如何进行GET方法, 以下是您使用POST

执行基本HttpWebRequest请求的方式
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等桌面应用程序。