程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# HttpWebRequest通用類(二)

C# HttpWebRequest通用類(二)

編輯:C#入門知識

using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;

namespace HttpWeb
{
    /// <summary>
    ///  Http操作類
    /// </summary>
    public static class httptest
    {
        /// <summary>
        ///  獲取網址HTML
        /// </summary>
        /// <param name="URL">網址 </param>
        /// <returns> </returns>
        public static string GetHtml(string URL)
        {
            WebRequest wrt;
            wrt = WebRequest.Create(URL);
            wrt.Credentials = CredentialCache.DefaultCredentials;
            WebResponse wrp;
            wrp = wrt.GetResponse();
            string reader = new StreamReader(wrp.GetResponseStream(), Encoding.GetEncoding("gb2312")).ReadToEnd();
            try
            {
                wrt.GetResponse().Close();
            }
            catch (WebException ex)
            {
                throw ex;
            }
            return reader;
        }
        /// <summary>
        /// 獲取網站cookie
        /// </summary>
        /// <param name="URL">網址 </param>
        /// <param name="cookie">cookie </param>
        /// <returns> </returns>
        public static string GetHtml(string URL, out string cookie)
        {
            WebRequest wrt;
            wrt = WebRequest.Create(URL);
            wrt.Credentials = CredentialCache.DefaultCredentials;
            WebResponse wrp;

            wrp = wrt.GetResponse();


            string html = new StreamReader(wrp.GetResponseStream(), Encoding.GetEncoding("gb2312")).ReadToEnd();

            try
            {
                wrt.GetResponse().Close();
            }
            catch (WebException ex)
            {
                throw ex;
            }

            cookie = wrp.Headers.Get("Set-Cookie");
            return html;
        }
        public static string GetHtml(string URL, string postData, string cookie, out string header, string server)
        {
            return GetHtml(server, URL, postData, cookie, out header);
        }
        public static string GetHtml(string server, string URL, string postData, string cookie, out string header)
        {
            byte[] byteRequest = Encoding.GetEncoding("gb2312").GetBytes(postData);
            return GetHtml(server, URL, byteRequest, cookie, out header);
        }
        public static string GetHtml(string server, string URL, byte[] byteRequest, string cookie, out string header)
        {
            byte[] bytes = GetHtmlByBytes(server, URL, byteRequest, cookie, out header);
            Stream getStream = new MemoryStream(bytes);
            StreamReader streamReader = new StreamReader(getStream, Encoding.GetEncoding("gb2312"));
            string getString = streamReader.ReadToEnd();
            streamReader.Close();
            getStream.Close();
            return getString;
        }

        /// <summary>
        /// Post模式浏覽
        /// </summary>
        /// <param name="server">服務器地址 </param>
        /// <param name="URL">網址 </param>
        /// <param name="byteRequest">流 </param>
        /// <param name="cookie">cookie </param>
        /// <param name="header">句柄 </param>
        /// <returns> </returns>
        public static byte[] GetHtmlByBytes(string server, string URL, byte[] byteRequest, string cookie, out string header)
        {
            long contentLength;
            HttpWebRequest httpWebRequest;
            HttpWebResponse webResponse;
            Stream getStream;

            httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL);
            CookieContainer co = new CookieContainer();
            co.SetCookies(new Uri(server), cookie);

            httpWebRequest.CookieContainer = co;

            httpWebRequest.ContentType = "application/x-www-form-urlencoded";
            httpWebRequest.Accept =
                "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
            httpWebRequest.Referer = server;
            httpWebRequest.UserAgent =
                "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)";
            httpWebRequest.Method = "Post";
            httpWebRequest.ContentLength = byteRequest.Length;
            Stream stream;
            stream = httpWebRequest.GetRequestStream();
            stream.Write(byteRequest, 0, byteRequest.Length);
            stream.Close();
            webResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            header = webResponse.Headers.ToString();
            getStream = webResponse.GetResponseStream();
            contentLength = webResponse.ContentLength;

            byte[] outBytes = new byte[contentLength];
            outBytes = ReadFully(getStream);
            getStream.Close();
            return outBytes;
        }
        public static byte[] ReadFully(Stream stream)
        {
            byte[] buffer = new byte[128];
            using (MemoryStream ms = new MemoryStream())
            {
                while (true)
                {
                    int read = stream.Read(buffer, 0, buffer.Length);
                    if (read <= 0)
                        return ms.ToArray();
                    ms.Write(buffer, 0, read);
                }
            }
        }

        /// <summary>
        /// Get模式
        /// </summary>
        /// <param name="URL">網址 </param>
        /// <param name="cookie">cookies </param>
        /// <param name="header">句柄 </param>
        /// <param name="server">服務器 </param>
        /// <param name="val">服務器 </param>
        /// <returns> </returns>
        public static string GetHtml(string URL, string cookie, out string header, string server)
        {
            return GetHtml(URL, cookie, out header, server, "");
        }
        /// <summary>
        /// Get模式浏覽
        /// </summary>
        /// <param name="URL">Get網址 </param>
        /// <param name="cookie">cookie </param>
        /// <param name="header">句柄 </param>
        /// <param name="server">服務器地址 </param>
        /// <param name="val"> </param>
        /// <returns> </returns>
        public static string GetHtml(string URL, string cookie, out string header, string server, string val)
        {
            HttpWebRequest httpWebRequest;
            HttpWebResponse webResponse;
            Stream getStream;
            StreamReader streamReader;
            string getString = "";
            httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL);
            httpWebRequest.Accept = "*/*";
            httpWebRequest.Referer = server;
            CookieContainer co = new CookieContainer();
            co.SetCookies(new Uri(server), cookie);
            httpWebRequest.CookieContainer = co;
            httpWebRequest.UserAgent =
                "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)";
            httpWebRequest.Method = "GET";
            webResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            header = webResponse.Headers.ToString();
            getStream = webResponse.GetResponseStream();
            streamReader = new StreamReader(getStream, Encoding.GetEncoding("gb2312"));
            getString = streamReader.ReadToEnd();

            streamReader.Close();
            getStream.Close();
            return getString;
        }
        /// <summary>
        /// 返回驗證碼圖片流
        /// </summary>
        /// <param name="server">服務器地址 </param>
        /// <param name="URL">驗證碼網址 </param>
        /// <param name="cookie">cookie </param>
        /// <returns> </returns>
        public static Stream GetStreamByBytes(string server, string URL, string cookie)
        {
            Stream stream = GetCode(server, URL, cookie);
            return stream;
        }

        /// <summary>
        /// //獲取驗證碼
        /// </summary>
        /// <param name="server">服務器地址 </param>
        /// <param name="url">驗證碼網址 </param>
        /// <param name="cookie">cookie </param>
        /// <returns> </returns>
        public static Stream GetCode(string server, string url, string cookie)
        {

            HttpWebRequest httpWebRequest;

            httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
            CookieContainer co = new CookieContainer();
            co.SetCookies(new Uri(server), cookie);
            httpWebRequest.CookieContainer = co;

            HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse();
            Stream stream = response.GetResponseStream();
            return stream;

        }
        /// <summary>
        /// 獲取html
        /// </summary>
        /// <param name="server"> </param>
        /// <param name="url"> </param>
        /// <param name="cookie"> </param>
        /// <returns> </returns>

        public static string GetUser(string server, string url, string cookie)
        {
            string getString = "";
            try
            {
                HttpWebRequest httpWebRequest;
                StreamReader streamReader;


                httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
                CookieContainer co = new CookieContainer();
                co.SetCookies(new Uri(server), cookie);
                httpWebRequest.CookieContainer = co;

                HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse();

                Stream stream = response.GetResponseStream();


                streamReader = new StreamReader(stream, Encoding.GetEncoding("gb2312"));
                getString = streamReader.ReadToEnd();


                try
                {
                    httpWebRequest.GetResponse().Close();
                }
                catch (WebException ex)
                {
                    throw ex;
                }
                streamReader.Close();
                stream.Close();

            }
            catch
            {
            }
            return getString;

        }

    }

}

作者“ RiXu Blog (日需博客)”
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved