以编程方式登录网站
从.NET中最简单的方法是Watin。你会做这样的事情:
using (var browser = new IE("http://mysite.com"))
{
browser.TextField(Find.ByName("email")).TypeText("[email protected]");
browser.TextField(Find.ByName("password")).TypeText("password");
browser.Button(Find.ByName("login")).Click();
if (browser.ContainsText("Welcome [email protected]!"))
{
// Success
}
}
要做到这一点与HttpWebRequest的,你会:
var req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentLength = postContent.Length;
req.ContentType = "application/x-www-form-urlencoded";
using (var streamWriter = new StreamWriter(req.GetRequestStream()))
{
streamWriter.Write(postContent);
}
using (var res = (HttpWebResponse)req.GetResponse())
{
_status = res.StatusCode;
using (var streamReader = new StreamReader(res.GetResponseStream()))
{
response = streamReader.ReadToEnd();
}
}
我想补充一个第三的方式,您还可以使用Web客户端:
var nvc = new NameValueCollection();
nvc.Add("email", "[email protected]");
nvc.Add("password", "password");
var wc = new WebClient();
byte[] responseArray = wc.UploadValues("http://mysite.com",nvc);
string responseText = Encoding.ASCII.GetString(responseArray));
使用错误凭证执行该代码的次数太多了,并且很肯定用户将被锁定在他的帐户之外。 – Jeroen 2010-07-28 18:32:52
但我怎么知道用户登录成功的代码....? 是否可以通过HTTP请求完成? (我认为对我这样的初学者来说是好的) Thinks in expectations! – xtremist 2010-07-28 18:40:54
随着Watin,你会然后检查browser.ContainsText(“欢迎[email protected]!”)或沿着这些线。你完全可以用HttpWebRequest来做,但代码要困难得多。我将编辑我的答案并添加上面的代码。 – ConsultUtah 2010-07-28 19:31:06
编辑,以清理一下音调。 – 2010-07-28 17:51:52
@罗伯特,谢谢 - 更清洁。 – ConsultUtah 2010-07-28 20:04:57