过程性 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
.
等桌面应用程序
所以我首先要说的是,当涉及到 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
.