以编程方式登录网站

xtr*_*ist 1 .net c# asp.net httprequest

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

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

谢谢.

Con*_*tah 11

从.NET执行此操作的最简单方法是Watin.你会做的事情如下:

 using (var browser = new IE("http://mysite.com"))
 {
  browser.TextField(Find.ByName("email")).TypeText("my@email.com");
  browser.TextField(Find.ByName("password")).TypeText("password");
  browser.Button(Find.ByName("login")).Click();

  if (browser.ContainsText("Welcome my@email.com!"))
  {
    // Success
  } 
 }
Run Code Online (Sandbox Code Playgroud)

要使用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();
  }
}       
Run Code Online (Sandbox Code Playgroud)

只是添加第三种方法,您还可以使用WebClient:

var nvc = new NameValueCollection();
nvc.Add("email", "my@email.com");
nvc.Add("password", "password");

var wc = new WebClient();
byte[] responseArray = wc.UploadValues("http://mysite.com",nvc);
string responseText = Encoding.ASCII.GetString(responseArray));
Run Code Online (Sandbox Code Playgroud)