亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#中HttpWebRequest的用法詳解

2020-01-24 02:17:51
字體:
來源:轉載
供稿:網友

本文實例講述了C#中HttpWebRequest的用法。分享給大家供大家參考。具體如下:

HttpWebRequest類主要利用HTTP 協議和服務器交互,通常是通過 GET 和 POST 兩種方式來對數據進行獲取和提交。下面對這兩種方式進行一下說明:

GET 方式:
GET 方式通過在網絡地址附加參數來完成數據的提交,比如在地址 //www.49028c.com/?hl=zh-CN 中,前面部分 //www.49028c.com表示數據提交的網址,后面部分 hl=zh-CN 表示附加的參數,其中 hl 表示一個鍵(key), zh-CN 表示這個鍵對應的值(value)。
程序代碼如下: 

復制代碼 代碼如下:
HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "http://www.49028c.com?hl=zh-CN" );
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
{
//在這里對接收到的頁面內容進行處理
}

使用 GET 方式提交中文數據。

GET 方式通過在網絡地址中附加參數來完成數據提交,對于中文的編碼,常用的有 gb2312 和 utf8 兩種。
用 gb2312 方式編碼訪問的程序代碼如下:

復制代碼 代碼如下:
Encoding myEncoding = Encoding.GetEncoding("gb2312");
string address = "http://www.49028c.com/?" + HttpUtility.UrlEncode("參數一", myEncoding) + "=" + HttpUtility.UrlEncode("值一", myEncoding);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(address);
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
{
//在這里對接收到的頁面內容進行處理
}

在上面的程序代碼中,我們以 GET 方式訪問了網址 //www.49028c.com ,傳遞了參數“參數一=值一”,由于無法告知對方提交數據的編碼類型,所以編碼方式要以對方的網站為標準。
 
POST 方式:

POST 方式通過在頁面內容中填寫參數的方法來完成數據的提交,參數的格式和 GET 方式一樣,是類似于 hl=zh-CN&newwindow=1 這樣的結構。
程序代碼如下:

復制代碼 代碼如下:
string param = "hl=zh-CN&newwindow=1";
byte[] bs = Encoding.ASCII.GetBytes(param);
HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "http://www.49028c.com/" );
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = bs.Length;
using (Stream reqStream = req.GetRequestStream())
{
   reqStream.Write(bs, 0, bs.Length);
}
using (WebResponse wr = req.GetResponse())
{
   //在這里對接收到的頁面內容進行處理
}

在上面的代碼中,我們訪問了 //www.49028c.com 的網址,分別以 GET 和 POST 方式提交了數據,并接收了返回的頁面內容。然而,如果提交的參數中含有中文,那么這樣的處理是不夠的,需要對其進行編碼,讓對方網站能夠識別。 
使用 POST 方式提交中文數據
POST 方式通過在頁面內容中填寫參數的方法來完成數據的提交,由于提交的參數中可以說明使用的編碼方式,所以理論上能獲得更大的兼容性。
用 gb2312 方式編碼訪問的程序代碼如下: 

復制代碼 代碼如下:
Encoding myEncoding = Encoding.GetEncoding("gb2312");
string param = HttpUtility.UrlEncode("參數一", myEncoding) + "=" + HttpUtility.UrlEncode("值一", myEncoding) + "&" + HttpUtility.UrlEncode("參數二", myEncoding) + "=" + HttpUtility.UrlEncode("值二", myEncoding);
byte[] postBytes = Encoding.ASCII.GetBytes(param);
HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "http://www.49028c.com/" );
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded;charset=gb2312";
req.ContentLength = postBytes.Length;
using (Stream reqStream = req.GetRequestStream())
{
   reqStream.Write(bs, 0, bs.Length);
}
using (WebResponse wr = req.GetResponse())
{
   //在這里對接收到的頁面內容進行處理
}

從上面的代碼可以看出, POST 中文數據的時候,先使用 UrlEncode 方法將中文字符轉換為編碼后的 ASCII 碼,然后提交到服務器,提交的時候可以說明編碼的方式,用來使對方服務器能夠正確的解析。 
用C#語言寫的關于HttpWebRequest 類的使用方法
復制代碼 代碼如下:
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;
        }
   }
}

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲免费av片| 日韩欧美在线国产| 亚洲a级在线播放观看| 欧美成人激情在线| 一区二区在线视频播放| 国产日韩换脸av一区在线观看| 俺去了亚洲欧美日韩| 国产成人免费av| 成人高h视频在线| 国内精品久久久久伊人av| 91夜夜揉人人捏人人添红杏| 日本成熟性欧美| 国产成人精品视频在线观看| 欧美富婆性猛交| 另类天堂视频在线观看| 在线播放国产一区二区三区| 992tv成人免费影院| 人体精品一二三区| 国产精品极品美女在线观看免费| 国产精品自拍偷拍| 日韩成人免费视频| 国内伊人久久久久久网站视频| 久久综合久中文字幕青草| 久久久女女女女999久久| 国产综合视频在线观看| 亚洲欧美日韩精品| 热久久这里只有| 亚洲97在线观看| 亚洲国产黄色片| 亚洲色图校园春色| 在线观看成人黄色| 欧美成人一区二区三区电影| 欧美亚洲视频一区二区| 国产美女精品视频免费观看| 韩国美女主播一区| 91精品国产自产91精品| 精品国产成人在线| 在线日韩日本国产亚洲| 国产成人精品亚洲精品| 欧美肥臀大乳一区二区免费视频| 欧美成人午夜视频| 亚洲性夜色噜噜噜7777| 情事1991在线| 久久久久久久久久久亚洲| 26uuu另类亚洲欧美日本老年| 萌白酱国产一区二区| 91精品久久久久久久久青青| 91成人天堂久久成人| 亚洲黄色有码视频| 欧美日韩福利视频| 91网在线免费观看| 日韩在线精品视频| 国产精品亚洲美女av网站| 亚洲精品wwww| 2019中文字幕在线免费观看| 欧美成人激情视频| 亚洲区bt下载| 亚洲午夜未删减在线观看| 91手机视频在线观看| 国产欧美日韩中文字幕| 欧美午夜xxx| 亚洲一区二区三区视频| 亚洲网址你懂得| 亚洲欧美另类在线观看| 欧美日韩成人在线观看| 亚洲电影免费观看高清完整版在线| 亚洲国产精品一区二区久| 欧美在线免费看| 亚洲天堂日韩电影| 美女视频黄免费的亚洲男人天堂| 国产亚洲精品一区二区| 日本久久91av| 一本色道久久88亚洲综合88| 色伦专区97中文字幕| www.日韩不卡电影av| 国产成人激情小视频| 成人在线视频网站| 91在线网站视频| 2019中文字幕在线免费观看| 成人性生交大片免费看小说| 97国产suv精品一区二区62| 欧美高清性猛交| 久久久久久九九九| 2018日韩中文字幕| 亚洲精品videossex少妇| 91av在线播放视频| 亚洲丝袜av一区| 欧美大人香蕉在线| 91麻豆国产语对白在线观看| 亚洲视频一区二区三区| 国内伊人久久久久久网站视频| 亚洲成人精品av| 欧美日韩ab片| 欧美日韩国产色视频| 欧美亚洲一级片| 欧美理论电影网| 欧美视频免费在线观看| 色综合导航网站| 亚洲free性xxxx护士hd| 中文字幕在线看视频国产欧美在线看完整| 日韩欧美国产免费播放| 日韩av一区在线观看| 国产精品久久久精品| 久久久之久亚州精品露出| 国产欧美一区二区三区在线看| 亚洲欧美激情视频| 日韩欧美在线网址| 日韩一区二区福利| 欧美视频二区36p| 中文字幕亚洲欧美在线| 久久亚洲国产精品| 亚洲欧美中文另类| 欧美久久精品午夜青青大伊人| 日韩中文字幕不卡视频| 亚洲精品国产欧美| 精品亚洲va在线va天堂资源站| 日韩中文字幕精品视频| 久久精品成人一区二区三区| 亚洲欧洲第一视频| 亚洲成人黄色网址| 国产精品一区二区性色av| 亚洲精品wwww| 国产精品久久视频| 国产精品久久久久久久久久久新郎| 日韩国产精品亚洲а∨天堂免| 欧美精品成人在线| 日韩电影中文字幕一区| 日韩精品久久久久| 伊人伊成久久人综合网小说| 欧美成aaa人片在线观看蜜臀| 国产精品扒开腿做爽爽爽的视频| 亚洲视频在线播放| 97热精品视频官网| 国产精品青草久久久久福利99| www.日韩视频| 亚洲成**性毛茸茸| 国产91ⅴ在线精品免费观看| 欧美成人精品不卡视频在线观看| 色妞欧美日韩在线| 7777精品久久久久久| 亚洲欧美另类国产| 国产精品 欧美在线| 亚洲精品www久久久久久广东| 亚洲精品福利在线观看| 欧美日产国产成人免费图片| 亚洲国产成人久久| 国产精品777| 亚洲国产毛片完整版| 一区二区成人精品| 精品久久久久久久久久ntr影视| 欧美午夜性色大片在线观看| 精品久久久久国产| 精品毛片网大全| 北条麻妃一区二区三区中文字幕| 欧美中文字幕第一页| 精品国产一区久久久| 国产精品欧美一区二区三区奶水| 国产精品久久久久久久久久东京| 九色精品美女在线| 国产精品第1页| 国产精品毛片a∨一区二区三区|国| 日韩欧美在线中文字幕| 久久中国妇女中文字幕| 国内揄拍国内精品少妇国语|