Csharp WebRequest實作POST來取得網頁內容(及檔案下載)

CSharp要取得網頁內容可以利用內建的WebBrowser來取用IE Container進行連線與資料的取得,WebBrowser實作了很多內容,像是Javascript、HTML parse等等,功能十分強大。

這個範例不使用WebBrowser,而是使用HttpWebRequest來取得遠端的html內容。

Web Server說穿了也就是一個Socket Server,只是Browser在與其溝通時使用了規定的規則而已,以下範例會模擬此規則傳送header來告知Web Server,假裝自己是Browser,而此也會利用cookieContainer來記錄傳輸過程的Session情況,如此登入後的Session就可以在往後的需求連線中被使用。

程式說明:

Server端




  1. 取得post的參數test,並在Console及html內容裡輸出 。
  2. 當Session裡不存在save這個屬性時,設定此屬性,並在Console及html內容裡輸出Save Session訊息。
  3. 當Session的屬性save存在時,代表Session資訊是可被取得的,則會直接把內容輸出在Console及本身的html內容裡。

程式連續二次對Server進行要求,第一次會記錄Session的save屬性,而第二次就會直接輸出save資料內容。

WebRequest jsp輸出內容

程式碼:(JSP)

客戶端

利用WebRequest連續二次對Web Server做要求,並把回傳的內容輸出到Console裡。

上方紅色框內是第一次請求時回傳的內容test=123,而下方藍綠色框內則是第二次請求的內容test=456,可以看到Session的使用是有作用的。

WebRequest回傳內容

在使用WebRequest時,需先設定header及cookie等屬性再把要post出去的資料wirte out,之後才進行read in的動作。

程式碼:

log4net的使用可以參考Log4net Visual Studio版的log4j

Java版可以參考HttpURLConnection來實作get及post動作

增加可下載檔案及可取得經gzip或defalt後的網頁內容




0 comments on “Csharp WebRequest實作POST來取得網頁內容(及檔案下載)

    2 Pings/Trackbacks 於 "Csharp WebRequest實作POST來取得網頁內容(及檔案下載)"

    1. [...] 之前寫過利用Csharp的WebRequest來下載網頁的內容,這個範例下載的內容是文字內容,如果要下載binary二位元的檔案,就需要修改原本使用的StreamReader變成使用Stream,在之前的範例都有補上內容了,另外還針對deflate及Gzip網頁壓縮功能進行了支援。 [...]

    發表迴響