C#實現加簡單的Http請求

來源:互聯網
上載者:User

標籤:

  通過.Net中的兩個類HttpWebRequest類,HttpWebResponse類來實現Http的請求,響應處理。

第一個小測試是請求百度首頁(http://www.baidu.com)的內容,也就是要獲得百度首頁的html內容,

實現步驟:

1.通過WebRequest類建立一個HttpWebRequest的對象,該對象可以包含Http請求資訊。

  (我有點不理解的是,為什麼要通過父類WebRequest來建立這個對象,而不能new一個HttpWebRequest來建立

    ,在HttpWebRequest類中的建構函式是:

    protected HttpWebRequest(SerializationInfo serializationInfo, StreamingContext streamingContext); )

2.設定HttpWebRequest對象,其實就是設定Http請求報文的資訊內容。

3.從HttpWebRequest對象中擷取HttpWebResponse對象,該對象包含Http響應資訊。

4.從響應資訊中擷取回應標頭資訊和響應主體資訊。

 

部分實現代碼如下:

建立HttpWebRequest請求,佈建要求報文資訊

1   //請求2  string uri = http://www.baidu.com;3  HttpWebRequest request = HttpWebRequest.Create(uri) as HttpWebRequest;4  request.Method = "GET";                            //要求方法5  request.ProtocolVersion = new Version(1, 1);   //Http/1.1版本
//Add Other ...


接收響應,輸出回應標頭部資訊以及主體資訊

 1   HttpWebResponse response= 2                 request.GetResponse() as HttpWebResponse; 3   //Header 4   foreach (var item in response.Headers)    5  { 6     this.txt_Header.Text += item.ToString()+": " +    7     response.GetResponseHeader  (item.ToString()) 8     + System.Environment.NewLine; 9  }10 11    //如果主體資訊不為空白,則接收主體資訊內容12   if (response.ContentLength <= 0)13      return;14   //接收響應主體資訊15   using(Stream stream =response.GetResponseStream())16   {17     int totalLength=(int)response.ContentLength;18     int numBytesRead=0;19     byte[] bytes=new byte[totalLength+1024];20    //通過一個迴圈讀取流中的資料,讀取完畢,跳出迴圈21     while( numBytesRead < totalLength  )22     {23      int num=stream.Read(bytes,numBytesRead,1024);  //每次希望讀取1024位元組24      if( num==0 )   //說明流中資料讀取完畢25        break;26      numBytesRead+=num;27     } 

28  }
29 //將接收到的主體資料顯示到介面30 string content=Encoding.UTF8.GetString(bytes);31 this.txt_Content.Text=content;

 

 

    第二個小測試是請求網上的一張圖片,並將圖片儲存到本地。

實現步驟與第一個小測試的非常類似,通過圖片的url向伺服器進行請求,然後

接收響應,響應的主體資訊內容儲存為本地圖片檔案。一小點不同之處就在於

需要將主體內容儲存為檔案形式,不是顯示到介面上。

 

關鍵代碼如下:

 1 //... 2 string url="http://xx.xxx/xx.jpg";  //圖片資源的url 3 //... 4 using (Stream stream = response.GetResponseStream())    5 { 6    //目前時間作為檔案名稱 7    string fileName = DateTime.Now.ToString("yyyyMMddhhmmss")+".jpg"; 8    using (Stream fsStream = new FileStream(fileName, FileMode.Create)) 9    {10       stream.CopyTo(fsStream);11    }12 }

 

 附:運行結果如:

 

C#實現加簡單的Http請求

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.