C#完成簡略的Http要求實例。本站提示廣大學習愛好者:(C#完成簡略的Http要求實例)文章只能為提供參考,不一定能成為您想要的結果。以下是C#完成簡略的Http要求實例正文
本文實例講述了C#完成簡略的Http要求的辦法。分享給年夜家供年夜家參考。詳細剖析以下:
經由過程.Net中的兩個類HttpWebRequest類,HttpWebResponse類來完成Http的要求,呼應處置。
第一個小測試是要求百度首頁(http://www.百度.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要求,設置要求報文信息
//要求
string uri = http://www.百度.com;
HttpWebRequest request = HttpWebRequest.Create(uri) as HttpWebRequest;
request.Method = "GET"; //要求辦法
request.ProtocolVersion = new Version(1, 1); //Http/1.1版本
//Add Other ...
吸收呼應,輸入呼應頭部信息和主體信息
HttpWebResponse response=
request.GetResponse() as HttpWebResponse;
//Header
foreach (var item in response.Headers)
{
this.txt_Header.Text += item.ToString()+": " +
response.GetResponseHeader (item.ToString())
+ System.Environment.NewLine;
}
//假如主體信息不為空,則吸收主體信息內容
if (response.ContentLength <= 0)
return;
//吸收呼應主體信息
using(Stream stream =response.GetResponseStream())
{
int totalLength=(int)response.ContentLength;
int numBytesRead=0;
byte[] bytes=new byte[totalLength+1024];
//經由過程一個輪回讀取流中的數據,讀取終了,跳出輪回
while( numBytesRead < totalLength )
{
int num=stream.Read(bytes,numBytesRead,1024); //每次願望讀取1024字節
if( num==0 ) //解釋流中數據讀取終了
break;
numBytesRead+=num;
}
}
//將吸收到的主體數據顯示到界面
string content=Encoding.UTF8.GetString(bytes);
this.txt_Content.Text=content;
第二個小測試是要求網上的一張圖片,並將圖片保留到當地。
完成步調與第一個小測試的異常相似,經由過程圖片的url向辦事器停止要求,然後吸收呼應,呼應的主體信息內容保留為當地圖片文件。一小點分歧的地方就在於須要將主體內容保留為文件情勢,不是顯示到界面上。
症結代碼以下:
//...
string url="http://xx.xxx/xx.jpg"; //圖片資本的url
//...
using (Stream stream = response.GetResponseStream())
{
//以後時光作為文件名
string fileName = DateTime.Now.ToString("yyyyMMddhhmmss")+".jpg";
using (Stream fsStream = new FileStream(fileName, FileMode.Create))
{
stream.CopyTo(fsStream);
}
}
附:運轉成果以下圖:
願望本文所述對年夜家的C#法式設計有所贊助。