/// <summary> /// 常用的Http工具函数集合 /// </summary> class HtmlTool { /// <summary> /// 模拟POST访问 /// </summary> /// <param name="postUrl">模拟POST的URL</param> /// <param name="postDataStr">需要POST的数据</param> /// <returns>模拟访问的网页源代码</returns> public static string sendPost(string postUrl, string postDataStr) { string retString = ""; if (Global.noException) { //用来存放cookie CookieContainer cookie = null; HttpWebRequest request = null; Stream myRequestStream = null; StreamWriter myStreamWriter = null; HttpWebResponse response = null; Stream myResponseStream = null; StreamReader myStreamReader = null; try { cookie = new CookieContainer(); //发送一个POST请求 request = (HttpWebRequest)WebRequest.Create(postUrl); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr); request.CookieContainer = cookie; myRequestStream = request.GetRequestStream(); myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312")); myStreamWriter.Write(postDataStr); //获取返回的内容 response = (HttpWebResponse)request.GetResponse(); response.Cookies = cookie.GetCookies(response.ResponseUri); myResponseStream = response.GetResponseStream(); myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); retString = myStreamReader.ReadToEnd(); } catch (Exception ex) { Global.noException = false; Console.Write("发送POST失败!\n报错:" + ex.Message); } finally { if (myStreamWriter != null) { myStreamWriter.Close(); } if (myStreamReader != null) { myStreamReader.Close(); } if (myResponseStream != null) { myResponseStream.Close(); } if (response != null) { response.Close(); } } } return retString; } /// <summary> /// 模拟GET访问 /// </summary> /// <param name="getUrl">模拟GET的URL</param> /// <returns>模拟访问的网页源代码</returns> public static string SendGet(string getUrl) { string retString = ""; if (Global.noException) { HttpWebRequest request = null; HttpWebResponse response = null; Stream myResponseStream = null; StreamReader myStreamReader = null; try { request = (HttpWebRequest)WebRequest.Create(getUrl); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; response = (HttpWebResponse)request.GetResponse(); myResponseStream = response.GetResponseStream(); myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); retString = myStreamReader.ReadToEnd(); } catch (Exception ex) { Global.noException = false; Console.Write("发送GET失败!\n报错:" + ex.Message); } finally { if (myStreamReader != null) { myStreamReader.Close(); } if (myResponseStream != null) { myResponseStream.Close(); } if (response != null) { response.Close(); } } } return retString; } /// <summary> /// 获取某个URL的重定向地址 /// </summary> /// <param name="getUrl">原始的地址</param> /// <returns>重定向之后的地址</returns> public static string GetRedirection(string getUrl) { if (Global.noException) { HttpWebRequest request = null; HttpWebResponse response = null; try { request = (HttpWebRequest)WebRequest.Create(getUrl); request.AllowAutoRedirect = false; request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; response = (HttpWebResponse)request.GetResponse(); if (response.Headers.Get("Location") == null) return ""; return response.Headers.Get("Location"); } catch (Exception ex) { Global.noException = false; Console.Write("获取重定向失败!报错:\n" + ex.Message); } finally { if (response != null) { response.Close(); } } } return ""; } /* * 在post的时候有时也用的到cookie * 所以在外部一个cookie属性随时保存 * CookieContainer cookie = new CookieContainer(); * 注意:有时候请求会重定向,但我们就需要从重定向url获取东西,可以用: * request.AllowAutoRedirect = false; * 设置重定向禁用,你就可以从headers的Location属性中获取重定向地址 */ }
原文:http://blog.csdn.net/chao88552828/article/details/22867445