常用的Http工具函数集合
2014-04-03 14:11
465 查看
/// <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属性中获取重定向地址 */ }
相关文章推荐
- JS常用工具函数整理
- ExtJS 常用工具函数
- ASP常用的函数模块 http://www.cnblogs.com/cnnix/archive/2006/07/16/452286.html
- cocos2d游戏开发,常用工具集合
- 标准IO:常用函数集合
- 工具小函数集合
- cocos2d游戏开发,常用工具集合
- linux常用工具集合
- Cocos2d游戏开发常用工具集合
- 简单常用JS函数集合大全107个
- Fiddler是位于客户端和服务器端的HTTP代理(目前最常用的http抓包工具之一)
- 常用辅助函数集合
- cocos2d游戏开发,常用工具集合
- python opencv3 —— 常用工具、辅助函数、绘图函数(图像添加文本、矩形等几何形状)
- web报表工具FineReport常用函数的用法总结(日期和时间函数)
- NLP常用工具 from:http://www.cppblog.com/baby-fly/archive/2010/10/08/129003.html
- ANDROID 开发常用的框架、工具、API最全集合
- 一些Linux用到的C工具集常用函数实现
- 数组常用函数事件集合
- ASP常用的几个功能模块封装成函数调用(登录验证,状态切换。。) http://www.tsingfeng.com/archives/?article-89.html