19
2015
01

使用HttpWebrequest对网站进行模拟操作(附登陆百度demo)

public string GetHtml(string url, string Referer, Encoding encode, bool SaveCookie)
        {
            HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest;
            req.Method = "GET";
            req.CookieContainer = this.CookieContainer;
            req.Proxy = null;
            if (!string.IsNullOrEmpty(Referer))
                req.Referer = Referer;
            using (HttpWebResponse hwr = req.GetResponse() as HttpWebResponse)
            {
                if (SaveCookie)
                {
                    this.CookieCollection = hwr.Cookies;
                    this.CookieContainer.GetCookies(req.RequestUri);
                }
                using (StreamReader SR = new StreamReader(hwr.GetResponseStream(), encode))
                {
                    return SR.ReadToEnd();
                }
            }
        }
  public string PostHtml(string url, string Referer, string data, Encoding encode, bool SaveCookie)
       {
           HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest;
           req.CookieContainer = this.CookieContainer;
           req.ContentType = "application/x-www-form-urlencoded";
           req.Method = "POST";
           req.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:30.0) Gecko/20100101 Firefox/30.0";
           req.Proxy = null;
           req.ProtocolVersion = HttpVersion.Version10;
           if (!string.IsNullOrEmpty(Referer))
               req.Referer = Referer;
           byte[] mybyte = Encoding.Default.GetBytes(data);
           req.ContentLength = mybyte.Length;
           using (Stream stream = req.GetRequestStream())
           {
               stream.Write(mybyte, 0, mybyte.Length);
           }
           using (HttpWebResponse hwr = req.GetResponse() as HttpWebResponse)
           {
               if (SaveCookie)
               {
                   this.CookieCollection = hwr.Cookies;
                   this.CookieContainer.GetCookies(req.RequestUri);
               }
               using (StreamReader SR = new StreamReader(hwr.GetResponseStream(), encode))
               {
                   return SR.ReadToEnd();
               }
           }
       }


小结

1.这是我封装的一个httphelp类中的一部分,get貌似不需要那些像什么UserAgent,ContentType之类的东西

2.POST请求中一般要设置ContentType和UserAgent

3.默认请求是GET

每次请求之后保存CookieContainer即可,赋给下一次请求的httpwebrequest

区别 HttpWebRequest.CookieContainer和HttpWebResponse.CookieCollection


此处说的是进行一次http请求获得响应之后

CookieContainer是当前域的所有Cookie

CookieCollection是该次请求相关的所有Cookie


来源:http://www.cnblogs.com/lianmin/p/4227242.html

« 上一篇下一篇 »

评论列表:

1.宁波租车  2015/1/23 11:57:41 回复该留言
程序不懂啊,学习。。。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。