使用HttpWebRequest等Http相關類,可以在應用程式中或者網站中模擬瀏覽器發送Post請求,在請求帶入相應的Post參數值,而後請求回遠程網頁信息。實現這一功能也很簡單,主要是依靠HttpWebRequest、HttpWebResponse、Stream等幾個類來完成。 首先來看下MSD ...
使用HttpWebRequest等Http相關類,可以在應用程式中或者網站中模擬瀏覽器發送Post請求,在請求帶入相應的Post參數值,而後請求回遠程網頁信息。實現這一功能也很簡單,主要是依靠HttpWebRequest、HttpWebResponse、Stream等幾個類來完成。
首先來看下MSDN上對這幾個類的定義:
HttpWebRequest類:提供用於在預先定義的屬性和方法支持的WebRequest和用於附加屬性和方法,使用戶直接使用HTTP伺服器進行交互。
HttpWebResponse類:包含對WebResponse類的屬性和方法的HTTP特定用法的支持。該HttpWebResponse類用於構建發送HTTP請求HTTP獨立的客戶端應用程式和接收HTTP響應。
Stream類:所有流的抽象基類。流是位元組序列的抽象,例如文件,輸入/輸出設備,進程間通信管道或TCP / IP套接字。的流類及其派生類提供這些不同類型的輸入和輸出的的一般視圖,並分離從操作系統的具體細節和基礎設備編程器。
下麵直接貼代碼了,已經將該功能封裝成一個方法。
/// <summary> /// 以POST方式抓取遠程頁面內容 /// </summary> /// <param name="postData">參數列表</param> public static string Post_Http(string url, string postData, string encodeType) { string strResult = null; try { Encoding encoding = Encoding.GetEncoding(encodeType); byte[] POST = encoding.GetBytes(postData); HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url); myRequest.Method = "POST"; myRequest.ContentType = "application/x-www-form-urlencoded"; myRequest.ContentLength = POST.Length; Stream newStream = myRequest.GetRequestStream(); newStream.Write(POST, 0, POST.Length); //設置POST newStream.Close(); HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.Default); strResult = reader.ReadToEnd(); } catch (Exception ex) { strResult = ex.Message; } return strResult; }
備註:此文章轉載自ASP.NET以Post方式抓取遠程網頁內容類似爬蟲功能_IT技術小趣屋。