2010-07-28 153 views
1

如何以编程方式登录网站?以编程方式登录网站

我只想检查提供的网站用户名和密码是否正确。

谢谢。

+0

编辑,以清理一下音调。 – 2010-07-28 17:51:52

+0

@罗伯特,谢谢 - 更清洁。 – ConsultUtah 2010-07-28 20:04:57

回答

11

从.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)); 
+0

使用错误凭证执行该代码的次数太多了,并且很肯定用户将被锁定在他的帐户之外。 – Jeroen 2010-07-28 18:32:52

+0

但我怎么知道用户登录成功的代码....? 是否可以通过HTTP请求完成? (我认为对我这样的初学者来说是好的) Thinks in expectations! – xtremist 2010-07-28 18:40:54

+1

随着Watin,你会然后检查browser.ContainsText(“欢迎[email protected]!”)或沿着这些线。你完全可以用HttpWebRequest来做,但代码要困难得多。我将编辑我的答案并添加上面的代码。 – ConsultUtah 2010-07-28 19:31:06