C#中的HttpWebRequest類用法詳解
HttpWebRequest 是一個(gè)Http 請(qǐng)求類,繼承于 WebRequest。
WebRequest 是一個(gè)抽象類,能夠?qū)y(tǒng)一資源標(biāo)識(shí)符 (URI) 發(fā)出請(qǐng)求。
WebRequest 有以下派生類:
- System.IO.Packaging.PackWebRequest
- System.Net.FileWebRequest
- System.Net.FtpWebRequest
- System.Net.HttpWebRequest
使用時(shí)
using System.Net;
1,HttpWebRequest 實(shí)例化
以下是實(shí)例化方法,使用 visual studio 編寫代碼時(shí),會(huì)提示 可以簡(jiǎn)化代碼,原因下面說(shuō)
string url = "http://baidu.com"; HttpWebRequest httpWeb = (HttpWebRequest)HttpWebRequest.Create(url);
HttpWebRequest 對(duì)應(yīng)的是 URL,所以其連接字符串必須是 有效的 HTTP 字符串,網(wǎng)址前面必須加上 Http 協(xié)議類型。
可以是
- http://
- https://
可以加端口
http://baidu.com:666
也可以是IP,但也要加上 http 頭和端口。
HttpWebRequest 對(duì)象實(shí)例化,一般不直接new。而是使用.Create 方法返回一個(gè) WebRequest 對(duì)象。
HttpWebRequest httpWeb = (HttpWebRequest)WebRequest.Create("https://www.whuanle.cn:443");
注意下面兩個(gè)方法:
- HttpWebRequest.Create
- WebRequest.Create
Cretate 返回的都是 WebRequest 對(duì)象,因?yàn)?Create 是一個(gè)靜態(tài)方法
public static WebRequest Create(string requestUriString); public static WebRequest Create(Uri requestUri); public static WebRequest CreateDefault(Uri requestUri);
所以,創(chuàng)建HttpWebRequest 實(shí)例時(shí),這樣創(chuàng)建:
HttpWebRequest httpWeb = (HttpWebRequest)WebRequest.Create("https://www.whuanle.cn:443");
HttpWebRequest 支持 GET 和 POST 兩種方式進(jìn)行請(qǐng)求,
設(shè)置方法
HttpWebRequest httpWeb = (HttpWebRequest)WebRequest.Create("https://www.whuanle.cn:443"); httpWeb.Method = "GET";
WebRequest 的請(qǐng)求類型。
- http://
- https://
- ftp://
- file://
2,GetResponse 獲取請(qǐng)求結(jié)果
HttpWebRequest 對(duì)象 使用 .GetResponse() 方法, 獲取返回結(jié)果,.GetResponse() 返回的是一個(gè) WebResponse 對(duì)象。
WebResponse 對(duì)象的方法
Close() | 當(dāng)由子類重寫時(shí),將關(guān)閉響應(yīng)流。 |
CreateObjRef(Type) | 創(chuàng)建一個(gè)對(duì)象,該對(duì)象包含生成用于與遠(yuǎn)程對(duì)象進(jìn)行通信的代理所需的全部相關(guān)信息。 (Inherited from MarshalByRefObject) |
Dispose() | 釋放 WebResponse 對(duì)象使用的非托管資源。 |
Dispose(Boolean) | 釋放由 WebResponse 對(duì)象使用的非托管資源,并可根據(jù)需要釋放托管資源。 |
Equals(Object) | 確定指定的對(duì)象是否等于當(dāng)前對(duì)象。 (Inherited from Object) |
GetHashCode() | 作為默認(rèn)哈希函數(shù)。 (Inherited from Object) |
GetLifetimeService() | 檢索控制此實(shí)例的生存期策略的當(dāng)前生存期服務(wù)對(duì)象。 (Inherited from MarshalByRefObject) |
GetObjectData(SerializationInfo, StreamingContext) | 使用序列化目標(biāo)對(duì)象所需的數(shù)據(jù)填充 SerializationInfo。 |
GetResponseStream() | 當(dāng)在子類中重寫時(shí),從 Internet 資源返回?cái)?shù)據(jù)流。 |
GetType() | 獲取當(dāng)前實(shí)例的 Type。 (Inherited from Object) |
InitializeLifetimeService() | 獲取生存期服務(wù)對(duì)象來(lái)控制此實(shí)例的生存期策略。 (Inherited from MarshalByRefObject) |
MemberwiseClone() | 創(chuàng)建當(dāng)前 Object 的淺表副本。 (Inherited from Object) |
MemberwiseClone(Boolean) | 創(chuàng)建當(dāng)前 MarshalByRefObject 對(duì)象的淺表副本。 (Inherited from MarshalByRefObject) |
ToString() | 返回表示當(dāng)前對(duì)象的字符串。 (Inherited from Object) |
3,獲取結(jié)果
使用 WebSponse 對(duì)象的 GetResponseStream() 方法獲取數(shù)據(jù)流
string Url = "https://www.whuanle.cn:443"; WebRequest wReq = WebRequest.Create(Url); WebResponse wResp = wReq.GetResponse(); System.IO.Stream respStream = wResp.GetResponseStream();
4,獲取流信息
string Url = "https://www.whuanle.cn:443"; WebRequest wReq = WebRequest.Create(Url); WebResponse wResp = wReq.GetResponse(); System.IO.Stream respStream = wResp.GetResponseStream(); using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.UTF8)) { string a = ""; while ((a = reader.ReadLine()) != null) { Console.WriteLine(a); } return reader.ReadToEnd(); }
上面是一個(gè)獲取流的例子,以 UTF8 編碼輸出流,以行讀取。
下面是另一個(gè)方法
string Url = "https://www.whuanle.cn:443"; WebRequest wReq = WebRequest.Create(Url); WebResponse wResp = wReq.GetResponse(); System.IO.Stream respStream = wResp.GetResponseStream(); using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.UTF8)) { string str = reader.ReadToEnd(); Console.WriteLine(str); }
使用 reader.ReadToEnd() 可以一次性從流中讀取所有的字符。
推薦一位其他人的文章,里面列出了WebRequest、WebResponse 等對(duì)象所有的方法、屬性等。
地址:http://www.dbjr.com.cn/article/234688.htm
到此這篇關(guān)于C#中的HttpWebRequest類用法的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
利用Aspose.Word控件實(shí)現(xiàn)Word文檔的操作
偶然一次機(jī)會(huì),一個(gè)項(xiàng)目的報(bào)表功能指定需要導(dǎo)出為Word文檔,因此尋找了很多篇文章,不過(guò)多數(shù)介紹的比較簡(jiǎn)單一點(diǎn),于是也參考了官方的幫助介紹,終于滿足了客戶的需求。下面我由淺入深來(lái)介紹這個(gè)控件在實(shí)際業(yè)務(wù)中的使用過(guò)程吧2013-05-05C#代碼實(shí)現(xiàn)對(duì)AES加密解密
這篇文章主要介紹了C#代碼實(shí)現(xiàn)對(duì)AES加密解密的相關(guān)資料,AES是一個(gè)新的可以用于保護(hù)電子數(shù)據(jù)的加密算法,需要的朋友可以參考下2015-12-12C# 通過(guò)NI-VISA操作Tektronix TBS 2000B系列示波器的實(shí)現(xiàn)步驟
這篇文章主要介紹了C# 通過(guò)NI-VISA操作Tektronix TBS 2000B系列示波器的實(shí)現(xiàn)步驟,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-02-02C#中實(shí)現(xiàn)輸入漢字獲取其拼音(漢字轉(zhuǎn)拼音)的2種方法
這篇文章主要介紹了C#中實(shí)現(xiàn)輸入漢字獲取其拼音(漢字轉(zhuǎn)拼音)的2種方法,本文分別給出了使用微軟語(yǔ)言包、手動(dòng)編碼實(shí)現(xiàn)兩種實(shí)現(xiàn)方式,需要的朋友可以參考下2015-01-01