Form
构造request到登陆的页面,检查当前页面的html来获取要post的username和password对应的input的name,然后post提交进行登陆。
非form
1. 访问登陆站点,进行用户验证,然后保存cookie到内存中
{
//设置用户信息,发起请求
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(StocknetJsCfg.Xoi_UrlLogin);
webRequest.Credentials = new NetworkCredential(User, Pwd);
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
//从响应头中获取验证的cookie信息
authenticateCookieText = webResponse.Headers[“Set-Cookie”];
//Remove expires info
authenticateCookieText = expiresRegex.Replace(authenticateCookieText, "");
}
//设置用户信息,发起请求
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(StocknetJsCfg.Xoi_UrlLogin);
webRequest.Credentials = new NetworkCredential(User, Pwd);
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
//从响应头中获取验证的cookie信息
authenticateCookieText = webResponse.Headers[“Set-Cookie”];
//Remove expires info
authenticateCookieText = expiresRegex.Replace(authenticateCookieText, "");
}
2. 使用保存在内存中的验证cookie访问其他受限页面
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Headers.Set("Accept-Encoding","gzip");
//设置验证COOKIE放到请求中
webRequest.CookieContainer = new CookieContainer();
webRequest.CookieContainer.SetCookies(webRequest.Address, authenticateCookieText);
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
Stream respDecode;
switch (webResponse.ContentEncoding)
{
case "gzip":
respDecode = new GZipInputStream(webResponse.GetResponseStream());
break;
case "deflate":
respDecode = new InflaterInputStream(webResponse.GetResponseStream(), new Inflater(true));
break;
default: // "text/xml"
respDecode = webResponse.GetResponseStream();
break;
}
....
}
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Headers.Set("Accept-Encoding","gzip");
//设置验证COOKIE放到请求中
webRequest.CookieContainer = new CookieContainer();
webRequest.CookieContainer.SetCookies(webRequest.Address, authenticateCookieText);
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
Stream respDecode;
switch (webResponse.ContentEncoding)
{
case "gzip":
respDecode = new GZipInputStream(webResponse.GetResponseStream());
break;
case "deflate":
respDecode = new InflaterInputStream(webResponse.GetResponseStream(), new Inflater(true));
break;
default: // "text/xml"
respDecode = webResponse.GetResponseStream();
break;
}
....
}