常用的Http工具函数集合

来源:互联网 发布:php 分类信息cms系统 编辑:程序博客网 时间:2024/05/21 22:41
    /// <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属性中获取重定向地址         */    }

0 0
原创粉丝点击