public class HTMLHelper
    {
        /// <summary>   
        /// 获取CooKie  
        /// /// </summary>
        /// /// <param name="loginUrl"></param>   
        /// /// <param name="postdata"></param>   
        /// /// <param name="header"></param>  
        /// /// <returns></returns>      
        public static CookieContainer GetCooKie(string loginUrl, HttpHeader header)
        {
            HttpWebRequest request = null;
            HttpWebResponse response = null;
            try
            {
                CookieContainer cc = new CookieContainer();
                request = (HttpWebRequest)WebRequest.Create(loginUrl);
                request.Method = "GET";
                request.ContentType = header.contentType;
              
                 
                request.AllowAutoRedirect = false;
                request.CookieContainer = cc;
                request.KeepAlive = true;
                
                //接收响应        
                response = (HttpWebResponse)request.GetResponse();
                response.Cookies = request.CookieContainer.GetCookies(request.RequestUri);
                CookieCollection cook = response.Cookies;               //Cookie字符串格式    
                string strcrook = request.CookieContainer.GetCookieHeader(request.RequestUri);
                return cc;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

/// <summary>   
        /// 获取CooKie  
        /// /// </summary>
        /// /// <param name="loginUrl"></param>   
        /// /// <param name="postdata"></param>   
        /// /// <param name="header"></param>  
        /// /// <returns></returns>      
        public static CookieContainer GetCooKie(string loginUrl, string postdata, HttpHeader header)
        {
            HttpWebRequest request = null;
            HttpWebResponse response = null;
            try
            {
                CookieContainer cc = new CookieContainer();
                request = (HttpWebRequest)WebRequest.Create(loginUrl);
                request.Method = header.method;
                request.ContentType = header.contentType;
                byte[] postdatabyte = Encoding.UTF8.GetBytes(postdata);
                request.ContentLength = postdatabyte.Length;
                request.AllowAutoRedirect = false;
                request.CookieContainer = cc;
                request.KeepAlive = true;
                //提交请求      
                Stream stream;
                stream = request.GetRequestStream();
                stream.Write(postdatabyte, 0, postdatabyte.Length);
                stream.Close();
                //接收响应        
                response = (HttpWebResponse)request.GetResponse();
                response.Cookies = request.CookieContainer.GetCookies(request.RequestUri);
                CookieCollection cook = response.Cookies;               //Cookie字符串格式    
                string strcrook = request.CookieContainer.GetCookieHeader(request.RequestUri);
                return cc;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// 获取html  
        /// </summary>  
        /// <param name="getUrl"></param>   
        /// <param name="cookieContainer"></param>  
        /// <param name="header"></param>    
        /// <returns></returns>

public static string GetHtml(string getUrl, CookieContainer cookieContainer, HttpHeader header)
        {
            Thread.Sleep(1000);
            HttpWebRequest httpWebRequest = null;
            HttpWebResponse httpWebResponse = null;
            try
            {
                httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(getUrl);
                httpWebRequest.CookieContainer = cookieContainer;
                httpWebRequest.ContentType = header.contentType;
                httpWebRequest.ServicePoint.ConnectionLimit = header.maxTry;
                httpWebRequest.Referer = getUrl;
                httpWebRequest.Accept = header.accept;
                httpWebRequest.UserAgent = header.userAgent;
                httpWebRequest.Method = "GET";
                httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                Stream responseStream = httpWebResponse.GetResponseStream();
                StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);
                string html = streamReader.ReadToEnd();
                streamReader.Close();
                responseStream.Close();
                httpWebRequest.Abort();
                httpWebResponse.Close();
                return html;
            }
            catch (Exception e)
            {
                if (httpWebRequest != null) httpWebRequest.Abort();
                if (httpWebResponse != null) httpWebResponse.Close();
                return string.Empty;
            }
        }

/// <summary>
        /// 获取html  
        /// </summary>  
        /// <param name="getUrl"></param>   
        /// <param name="cookieContainer"></param>  
        /// <param name="header"></param>    
        /// <returns></returns>

public static string GetHtml(string getUrl,string post, CookieContainer cookieContainer, HttpHeader header,Encoding en)
        {
            Thread.Sleep(1000);
            HttpWebRequest myHttpWebRequest = null;
            HttpWebResponse httpWebResponse = null;
            try
            {               
                byte[] oneData = Encoding.Default.GetBytes(post);
                Uri uri = new Uri(getUrl);
                myHttpWebRequest = (HttpWebRequest)WebRequest.Create(uri);//请求的URL
                myHttpWebRequest.CookieContainer = cookieContainer;//*发送COOKIE
                myHttpWebRequest.Method = header.method;
                myHttpWebRequest.ContentType = header.contentType;
                myHttpWebRequest.ContentLength = oneData.Length;
                Stream newMyStream = myHttpWebRequest.GetRequestStream();
                newMyStream.Write(oneData, 0, oneData.Length);

try
                {
                    httpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                    StreamReader sr = new StreamReader(httpWebResponse.GetResponseStream(), en);

string str = sr.ReadToEnd();

string msg = string.Empty;

return str;
                }
                catch (Exception ex)
                {
                    return string.Empty;
                }
            }
            catch (Exception e)
            {
                if (myHttpWebRequest != null) myHttpWebRequest.Abort();
                if (httpWebResponse != null) httpWebResponse.Close();
                return string.Empty;
            }
            return string.Empty;
        }

/// <summary>
        /// 获取html  
        /// </summary>  
        /// <param name="getUrl"></param>   
        /// <param name="cookieContainer"></param>  
        /// <param name="header"></param>    
        /// <returns></returns>

public static string GetHtml(string getUrl, string post, CookieContainer cookieContainer,out CookieContainer co, HttpHeader header, Encoding en)
        {
            Thread.Sleep(1000);
            HttpWebRequest myHttpWebRequest = null;
            HttpWebResponse httpWebResponse = null;
            co = new CookieContainer();
            try
            {
                byte[] oneData = Encoding.Default.GetBytes(post);
                Uri uri = new Uri(getUrl);
                myHttpWebRequest = (HttpWebRequest)WebRequest.Create(uri);//请求的URL
                if (cookieContainer.Count > 0)
                {
                    myHttpWebRequest.CookieContainer = cookieContainer;
                }
                else
                {
                    myHttpWebRequest.CookieContainer = co;
                }
                
                myHttpWebRequest.Method = header.method;
                myHttpWebRequest.ContentType = header.contentType;
                myHttpWebRequest.ContentLength = oneData.Length;
                Stream newMyStream = myHttpWebRequest.GetRequestStream();
                newMyStream.Write(oneData, 0, oneData.Length);

try
                {
                    httpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                    StreamReader sr = new StreamReader(httpWebResponse.GetResponseStream(), en);

httpWebResponse.Cookies = myHttpWebRequest.CookieContainer.GetCookies(myHttpWebRequest.RequestUri);
                    CookieCollection cook = httpWebResponse.Cookies;               //Cookie字符串格式    
                    string strcrook = myHttpWebRequest.CookieContainer.GetCookieHeader(myHttpWebRequest.RequestUri);

string str = sr.ReadToEnd();

string msg = string.Empty;

return str;
                }
                catch (Exception ex)
                {
                    return string.Empty;
                }
            }
            catch (Exception e)
            {
                if (myHttpWebRequest != null) myHttpWebRequest.Abort();
                if (httpWebResponse != null) httpWebResponse.Close();
                return string.Empty;
            }
            return string.Empty;
        }

/// <summary>
        /// 获取Stream  
        /// </summary>  
        /// <param name="getUrl"></param>   
        /// <param name="cookieContainer"></param>  
        /// <param name="header"></param>    
        /// <returns></returns>

public static Stream GetStream(string getUrl, CookieContainer cookieContainer, HttpHeader header)
        {
            Thread.Sleep(1000);
            HttpWebRequest httpWebRequest = null;
            HttpWebResponse httpWebResponse = null;
            try
            {
                httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(getUrl);
                httpWebRequest.CookieContainer = cookieContainer;
                httpWebRequest.ContentType = header.contentType;
                httpWebRequest.ServicePoint.ConnectionLimit = header.maxTry;
                httpWebRequest.Referer = header.referer;
                httpWebRequest.Accept = header.accept;
                httpWebRequest.UserAgent = header.userAgent;
                httpWebRequest.Method = "GET";
                httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                Stream responseStream = httpWebResponse.GetResponseStream();

return responseStream;
            }
            catch (Exception e)
            {
                if (httpWebRequest != null) httpWebRequest.Abort();
                if (httpWebResponse != null) httpWebResponse.Close();
                return null;
            }
        }
     
        public static Stream GetStream(string getUrl, CookieContainer cookieContainer, out CookieContainer co, HttpHeader header)
        {

Thread.Sleep(1000);
            HttpWebRequest httpWebRequest = null;
            HttpWebResponse httpWebResponse = null;
            co = new CookieContainer();
            try
            {
                httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(getUrl);
                if (cookieContainer.Count > 0)
                {
                    httpWebRequest.CookieContainer = cookieContainer;
                }
                else
                {
                    httpWebRequest.CookieContainer = co;
                }
               
                httpWebRequest.ContentType = header.contentType;
                httpWebRequest.ServicePoint.ConnectionLimit = header.maxTry;
                httpWebRequest.Referer = getUrl;
                httpWebRequest.Accept = header.accept;
                httpWebRequest.UserAgent = header.userAgent;
                httpWebRequest.Method = "GET";
                httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                Stream responseStream = httpWebResponse.GetResponseStream();

httpWebResponse.Cookies = httpWebRequest.CookieContainer.GetCookies(httpWebRequest.RequestUri);
                CookieCollection cook = httpWebResponse.Cookies;               //Cookie字符串格式    
                string strcrook = httpWebRequest.CookieContainer.GetCookieHeader(httpWebRequest.RequestUri);

return responseStream;
            }
            catch (Exception e)
            {
                if (httpWebRequest != null) httpWebRequest.Abort();
                if (httpWebResponse != null) httpWebResponse.Close();
                return null;
            }
        }

}

public class HttpHeader
    {
        public string contentType { get; set; }
        public string accept { get; set; }
        public string userAgent { get; set; }
        public string method { get; set; }
        public int maxTry { get; set; }
        public string referer { get; set; }
    }

C#实现网站登录的更多相关文章

  1. cookielib和urllib2模块相结合模拟网站登录

    1.cookielib模块 cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源.例如可以利用 本模块的CookieJar类的对 ...

  2. discuz论坛与其它网站登录注册整合

    discuz论坛与其它网站登录注册整合 本文以discuz 7.0.0 php版本的论坛与 .net 2.0的网站注册登录整合为类.没有采用uc_center或第三方插件.以另类的方式实现.此方法实现 ...

  3. Java模拟网站登录02【转载】

    如何用Java代码模拟一些如百度.QQ之类的网站登录?有两个方式,一是发送模拟请求,二是模拟浏览器操作,而这两种方式恰好在Java有开源实现,在这里介绍一个工具包,它是家喻户晓的HttpClient. ...

  4. c# winform实现网页上用户自动登陆,模拟网站登录

    using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO ...

  5. 搭建开发框架Express,实现Web网站登录验证

    NodeJS学习笔记(一)——搭建开发框架Express,实现Web网站登录验证   JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需 ...

  6. Javascript技巧实例精选(4)—FTP网站登录的Javascript实现

    FTP网站登录的Javascript实现 >>点击这里下载完整html源码<< 这是最后的截图 这是核心Javascript源码 function goFtpSite() { ...

  7. 关于网站登录后的页面操作所携带的不同cookie值

    对于课堂派网站,登录后的页面操作只需要携带PHPSESSID或者cookie中间那部分即可,两个都带也可,SERVERID不知道是干啥的,每次响应的都会变. 代码实现: cookie = None c ...

  8. windowsXP用户被禁用导致不能网站登录

    1.查看系统事件,发现弹出如下的错误 2.根据上面的错误,我们很容易就可以判断是禁用了账户引起的 2.1后面进入计算机管理,再进入用户管理 2.2双击点开Internet来宾用于,发现此用户已经停用了 ...

  9. SharePoint 网站登录不上,3次输入用户名/密码白页

    新搭建的SharePoint 2013环境,第一次干的这么憋屈的慌,先是接了一个Ghost的服务器,装好的服务器.Sql.SharePoint.VS等一系列,却发现怎么都登陆不上去,输入账号3次以后白 ...

  10. HttpClient 4.x 执行网站登录并抓取网页的代码

    HttpClient 4.x 的 API 变化还是很大,这段代码可用来执行登录过程,并抓取网页. HttpClient API 文档(4.0.x), HttpCore API 文档(4.1) pack ...

随机推荐

  1. k8s调度-指定node

    1.给node加标签 kubectl label nodes k8s-slave2 slave= 2.查看标签 [root@k8s_master centos7]# kubectl describe ...

  2. Ueditor编辑器图片上传到万象优图

    最近想用typecho做一个个人博客站,typecho的文本编辑器不能上传图片,我就用Ueditor替换的了原来的文本编辑器,听说腾讯的万象优图每月有50G的免费空间和流量,我就自己改了下Uedito ...

  3. JSP HTTP 状态码

    JSP HTTP 状态码 HTTP请求与HTTP响应的格式相近,都有着如下结构: 以状态行+CRLF(回车换行)开始 零行或多行头模块+CRLF 一个空行,比如CRLF 可选的消息体比如文件,查询数据 ...

  4. xcode编译时,有第三方库时,编译设置build active architecture only问题

    本文转载至 http://blog.csdn.net/ysysbaobei/article/details/16371263 编译静态库 1.http://blog.csdn.net/dengdeng ...

  5. 二、Android应用的界面编程(一)界面编程与视图(View)组件

    Android应用的绝大部分UI组件都放在android.widget包及其子包.android.view包及其子包中,Android应用的所有UI组件都继承了View类.它代表一个空白的矩形区域.V ...

  6. lua例子(进出栈)

    #include <stdio.h> extern "C" { #include "lua-5.2.2/src/lauxlib.h" #includ ...

  7. 小米4s经常断网

    https://zhidao.baidu.com/question/1387985910554061020.html

  8. 九度OJ 1356:孩子们的游戏(圆圈中最后剩下的数) (约瑟夫环)

    时间限制:10 秒 内存限制:32 兆 特殊判题:否 提交:1333 解决:483 题目描述: 每年六一儿童节,JOBDU都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为JOBDU的资深 ...

  9. jquery点击一组按钮中的一个,跳转至对应页面处理策略。(如点击订单列表中的一个订单,跳转至该订单的详情)

    将改组按钮的数据设置一个相同的属性(如class),然后每个按钮设置不同的id 当用户点击属性为class的按钮,根据id属性来判断点击的是哪个按钮,然后进行相关操作. 代码示例: <scrip ...

  10. 500 Lines or Less: A Template Engine(模板引擎)

    介绍: 多数项目都是包含很多的逻辑处理,只有少部分的文字文本处理.编程语言非常擅长这类项目.但是有一些项目只包含了少量的逻辑处理,大量的文本数据处理.对于这些任务,我们期望有一个工具能够很好的处理这些 ...