查看文章 |
Post/Get方式获取Web页面
2006年11月10日 星期五 13:14
<======================= 原创文章,转载请注明出处! 作者: 谭剑 博客: http://hi.baidu.com/tanjian 关键字:C#,.NET,Web,页面,浏览,获取,post,get =======================> 有几个弟兄都问过这个问题,干脆把代码帖出来好了。 浏览器浏览Web页面的时候也无非是 post 或者 get ,带 cookies 或者不带 cookies 这几种方式。 有了下面这几个方法,什么web页面上的自动投票啊,自动查数据啊等等,全部搞定! 有个工具可以让你查看到IE浏览页面时候的通信内容:httplook , 也顺便推荐一下。 using System.Web; /// <summary> /// Post方式请求页面 /// </summary> /// <param name="url">地址</param> /// <param name="postData">post数据</param> /// <returns>响应</returns> private HttpWebResponse RequestbyPost(string url, string postData) { Uri lcUri = new Uri(url); HttpWebRequest loHttp = (HttpWebRequest)WebRequest.Create(lcUri); //string lcPostData = HttpUtility.UrlEncode(postData, System.Text.Encoding.Default); string lcPostData = postData; loHttp.Method = "POST"; loHttp.ContentType = "application/x-www-form-urlencoded"; loHttp.KeepAlive = true; byte[] lbPostBuffer = System.Text.Encoding.Default .GetBytes(lcPostData); loHttp.ContentLength = lbPostBuffer.Length; Stream loPostData = loHttp.GetRequestStream(); loPostData.Write(lbPostBuffer, 0, lbPostBuffer.Length); loPostData.Close(); return (HttpWebResponse)loHttp.GetResponse(); } /// <summary> /// Post方式请求页面 /// </summary> /// <param name="url">地址</param> /// <param name="postData">post数据</param> /// <returns>响应</returns> private HttpWebResponse RequestbyPost(string url, string postData, string cookieHeader) { Uri lcUri = new Uri(url); HttpWebRequest loHttp = (HttpWebRequest)WebRequest.Create(lcUri); //string lcPostData = HttpUtility.UrlEncode(postData, System.Text.Encoding.Default); string lcPostData = postData; loHttp.Method = "POST"; loHttp.ContentType = "application/x-www-form-urlencoded"; CookieContainer cookie1 = new CookieContainer(); loHttp.CookieContainer = cookie1; loHttp.CookieContainer.SetCookies(lcUri, cookieHeader); loHttp.KeepAlive = true; byte[] lbPostBuffer = System.Text.Encoding.Default .GetBytes(lcPostData); loHttp.ContentLength = lbPostBuffer.Length; Stream loPostData = loHttp.GetRequestStream(); loPostData.Write(lbPostBuffer, 0, lbPostBuffer.Length); loPostData.Close(); return (HttpWebResponse)loHttp.GetResponse(); } /// <summary> /// Get方式请求页面 /// </summary> /// <param name="url">地址</param> /// <returns>响应</returns> private HttpWebResponse RequestbyGet(string url) { Uri lcUri = new Uri(url); HttpWebRequest loHttp = (HttpWebRequest)WebRequest.Create(lcUri); loHttp.Method = "GET"; //loHttp.ContentType = "application/x-www-form-urlencoded"; return (HttpWebResponse)loHttp.GetResponse(); } /// <summary> /// Get方式请求页面 /// </summary> /// <param name="url">地址</param> /// <param name="cookieHeader">cookieHeader</param> /// <returns>响应</returns> private HttpWebResponse RequestbyGet(string url, out string cookieHeader) { Uri lcUri = new Uri(url); HttpWebRequest loHttp = (HttpWebRequest)WebRequest.Create(lcUri); loHttp.Method = "GET"; //loHttp.ContentType = "application/x-www-form-urlencoded"; loHttp.AllowAutoRedirect = true; loHttp.CookieContainer = new CookieContainer(); loHttp.KeepAlive = true; HttpWebResponse httpWebResponse = (HttpWebResponse)loHttp.GetResponse(); cookieHeader = loHttp.CookieContainer.GetCookieHeader(lcUri); return httpWebResponse; } |
最近读者: