HttpWebRequest 取得 網頁資訊

2016/12/07 17:23 Chieh-cheng Tsao HttpWebRequest C#

常常使用個網站的API 時 

有時候就會需要透過 後台 的部分取值

使用 HttpWebRequest 取值是最直接  也需要最小心的部分

這個也可以當作爬蟲使用 爬取目前網頁的 html 來取得 想要的資訊

 

System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.CreateHttp(URL);

//這邊通常是依需求改變的執行方法
request.Method = "GET";

//這邊也有可能會依需求而改變需要取得的 Type
 request.ContentType = "application/json";

//有時候需要加上這行 才能爬到 網站的資訊  ((因為有些網站 會防止程式去爬取他們的網頁資訊 所以需要透過下面這行幫忙偽裝一下
 request.UserAgent = "Mozilla/4.0 (compatible;MSIE 6.0;Windows NT 5.2;.NET CLR 1.1.4322)";

有些人習慣 在 URL 後面加上需要傳的參數
我這邊則是用 正規的方式

string param = "Adata=Avalue&Bdata=Bvalue&Cdata=Cvalue";

//編碼器  
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();

//再轉成byte的方式
byte[] bytes = encoding.GetBytes(data);
request.ContentLength = bytes.Length;

 using (System.IO.Stream requestStream = request.GetRequestStream())
    {
        // 寫入資訊
        requestStream.Write(bytes, 0, bytes.Length);
    }

//取得回傳訊息  經過這行 代表真的傳送出去上面所有的資訊之 指定的 URL  現在就是要取得回傳資訊
System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)(request.GetResponse());

 

//建置讀取回傳資訊的 Stream
var dataStream = response.GetResponseStream();

//開啟IO 讀取 裡面的資訊 我習慣上會寫成一個字串
System.IO.StreamReader reader = new System.IO.StreamReader(dataStream);

string responseFromServer = reader.ReadToEnd();

//關閉讀寫器 養成習慣
reader.Close();

//關閉 esponseStream()
 dataStream.Close();

//關閉 網頁 回傳器
 response.Close();

 

其中 responseFromServer  就是   該網頁資訊  有可能是 空白的  也有可能是  JSON字串 也可能是  XML字串  也有可能是 該網頁HTML
再來就式解析放是日後再介紹~~

發表評論

此篇評論

暫無討論