在以前我們經常是使用XmlHttp來獲取某個網頁的內容,現在.Net時代已經來臨,是否我們還要使用XMLHttp來獲取呢?答案當然是不,因爲微軟已經幫我們寫好了一些容易使用的類,而這些類就放在System.Net命名空間中。
這篇文章將會使用到兩個類:System.Net.HttpWebRequest以及System.Net.HttpWebResponse,它們負責發送以及接收請求,我們現在就來試一下獲取http://www.cnblogs.com/mugua/的首頁代碼,以下以代碼作示例。
首先建立一個HttpWebRequest實例,我們不用使用HttpWebRequest類的構造函數,而是使用WebRequest類提供的靜態方法Create,它的原型如下:
public static WebRequest Create(string); public static WebRequest Create(uri);
一般我們可以使用第一種方法,就是直接將網址傳進去,如果協議爲http或者https,它會返回一個HttpWebRequest實例:
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create( "http://www.cnblogs.com/mugua/");
因爲它返回的實例類型是WebRequest而不是HttpWebRequest,因此記得要進行強制類型轉換.
接下來建立一個HttpWebResponse以便接收服務器發送的信息,它是調用HttpWebRequest.GetResponse來獲取的:
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
如果webResponse.StatusCode的值爲HttpStatusCode.OK,表示成功,那你就可以接着讀取接收到的內容了: Stream stream = webResponse.GetResponseStream(); // 獲取接收到的流
System.IO.StreamReader streamReader = new StreamReader(stream, System.Text.Encoding.GetEncoding("GB2312"));
// 建立一個流讀取器,可以設置流編碼,不設置則默認爲UTF-8
string content = streamReader.ReadToEnd();// 讀取流字符串內容
streamReader.Close();// 關閉相關對象
webResponse.Close();
大功告成,我們已經將無憂腳本首頁內容保存在content這個字符串變量中了,很簡單吧?當然,根據需要還有更多設計方法可以選擇,比如使用Socket,那還提供了System.Net.Sockets命名空間中的類,學.Net的朋友有事沒事逛逛MSDN,肯定會有更多的收穫。