使用HttpWebRequest以及HttpWebResponse讀取Http遠程文件[轉]

   在以前我們經常是使用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,肯定會有更多的收穫。
發佈了31 篇原創文章 · 獲贊 3 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章