模拟登录代码示例,此示例可以做参考。
引用命名空间:
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using
System.Net;
using System.Text;
/// <summary>
/// 模拟登录
/// </summary>
/// <param name="serverIP">服务器IP</param>
/// <param name="userName">用户名</param>
/// <param name="password">密码</param>
public void DoLogin(string serverIP, string userName, string password)
{
try
{
string strUrl = "http://" + serverIP + "/xxxLogin.aspx";
//content根据实际情况增加参数 这里举例
string content = string.Format(@"__VIEWSTATE={0}&__EVENTVALIDATION={1}&UserName={2}&Password={3}",
System.Web.HttpUtility.UrlEncode("/wEDDD/eqS+MMMMMMMMMMMMMMM="),
System.Web.HttpUtility.UrlEncode("/wEWDwL2yt/EEEE/+MMMMMMMMMMMMMMM"),
userName, password);
//这里实例化一个,一般使用静态变量。
CookieContainer _CookieContainer = new CookieContainer();
//设置请求参数
HttpWebRequest webReq = HttpWebRequest.Create(strUrl) as HttpWebRequest;
webReq.ContentType = "application/x-www-form-urlencoded";
webReq.Method = "POST";
webReq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3";
webReq.KeepAlive = true;
webReq.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
webReq.AllowAutoRedirect = false;
webReq.CookieContainer = _CookieContainer;
webReq.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36";
//设置数据流
byte[] bytes = System.Text.Encoding.Default.GetBytes(content);
webReq.ContentLength = bytes.Length;
Stream stream = webReq.GetRequestStream();
stream.Write(bytes, 0, bytes.Length);
string cookie = "";//用于调试查看,这里可以不取。
string strRet = "";
using (HttpWebResponse webRes = (HttpWebResponse)webReq.GetResponse())
{
cookie = webRes.Headers.Get("Set-Cookie");
Stream webResStream = webRes.GetResponseStream();
StreamReader sr = new StreamReader(webResStream);
strRet = sr.ReadToEnd();
}
Uri uri = new Uri("http://" + serverIP + "/")
IEnumerator e = _CookieContainer.GetCookies(uri).GetEnumerator();
IDic<string,
System.Net.Cookie> Cookie_Dic = new Dic<string,
System.Net.Cookie>();
while (e.MoveNext())
{
System.Net.Cookie c = e.Current as
System.Net.Cookie;
if (!Cookie_Dic.ContainsKey(c.Name))
{
Cookie_Dic.Add(c.Name, c);
}
}
if (!Cookie_Dic.ContainsKey("这里输入登录成功的标识键,如果没有,寻找其它方案"))
{
throw new Exception("登录失败!");
}
}
catch (Exception ex)
{
throw ex;
}
}