C#使用WebRequest和WebResponse获得网页源代码

1.HttpHelper类

using System;
using System.IO;
using System.Net;
using System.Text;

namespace ConsoleApplication1
{
    public static class HttpHelper
    {
        private static readonly Encoding DEFAULTENCODE = Encoding.UTF8;

        /// <summary>
        /// Http get
        /// </summary>
        /// <param name="url"></param>
        /// <param name="data"></param>
        /// <param name="encoding"></param>
        /// <returns></returns>
        public static string Get(string url, string data, Encoding encoding)
        {
            url = string.Format("{0}?{1}", url, data);
            WebRequest request = WebRequest.Create(url);
            request.ContentType = "application/x-www-form-urlencoded";
            request.Method = EnumWebMethod.GET.ToString();
            WebResponse response = request.GetResponse();
            using (StreamReader stream = new StreamReader(response.GetResponseStream(), encoding))
            {
                return stream.ReadToEnd();
            }
        }

        /// <summary>
        /// Http post
        /// </summary>
        /// <param name="url"></param>
        /// <param name="data"></param>
        /// <param name="encoding"></param>
        /// <returns></returns>
        public static string Post(string url, string data, Encoding encoding)
        {
            byte[] bytes = encoding.GetBytes(data);
            WebRequest request = WebRequest.Create(url);
            request.ContentType = "application/x-www-form-urlencoded";
            request.Method = EnumWebMethod.POST.ToString();
            using (Stream stream = request.GetRequestStream())
            {
                stream.Write(bytes, 0, bytes.Length);
            }
            WebResponse response = request.GetResponse();
            using (StreamReader stream = new StreamReader(response.GetResponseStream(), encoding))
            {
                return stream.ReadToEnd();
            }
        }

        /// <summary>
        /// GetResponse
        /// </summary>
        /// <param name="url"></param>
        /// <param name="method"></param>
        /// <returns></returns>
        public static string GetResponse(string url, EnumWebMethod method)
        {
            return GetResponse(url, DEFAULTENCODE, method);
        }

        /// <summary>
        /// GetResponse
        /// </summary>
        /// <param name="url"></param>
        /// <param name="method"></param>
        /// <returns></returns>
        public static string GetResponse(string url, Encoding encoding, EnumWebMethod method)
        {
            Uri uri = new Uri(url);
            string data = uri.Query;
            if (data.StartsWith("?"))
                data = data.Remove(0, 1);
            string newurl = "http://" + uri.Authority + uri.AbsolutePath;
            return GetResponse(newurl, data, encoding, method);
        }

        /// <summary>
        /// GetResponse
        /// </summary>
        /// <param name="url"></param>
        /// <param name="data"></param>
        /// <param name="method"></param>
        /// <returns></returns>
        public static string GetResponse(string url, string data, EnumWebMethod method)
        {
            return GetResponse(url, data, DEFAULTENCODE, method);
        }

        /// <summary>
        /// GetResponse
        /// </summary>
        /// <param name="url"></param>
        /// <param name="data"></param>
        /// <param name="encoding"></param>
        /// <param name="method"></param>
        /// <returns></returns>
        public static string GetResponse(string url, string data, Encoding encoding, EnumWebMethod method)
        {
            if (EnumWebMethod.GET == method)
            {
                return Get(url, data, encoding);
            }
            else
            {
                return Post(url, data, encoding);
            }
        }
    }

    /// <summary>
    /// Method
    /// </summary>
    public enum EnumWebMethod
    {
        POST,
        GET
    }
}

2.调用示例

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(HttpHelper.GetResponse("http://www.mzwu.com/article.asp?id=1&t=1000", EnumWebMethod.GET));
            Console.ReadKey();
        }
    }
}


评论: 0 | 引用: 0 | 查看次数: 9687
发表评论
登录后再发表评论!