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端

Read More

JApplet與Web Server做溝通

Applet除非是內部或自己使用時,可以直接使用JDBC來連接資料庫,而一般對外開放的服務如果讓Applet直接連接到資料庫,需要開port讓Clinet 的Applet來使用,在安全性上相對的十分危險。

此時可以利用一個中繼的Sokcet Server或是Web Server來當與資料庫連接的proxy代理服務器,如此Apllet只要連接Web Server,對Server提出需求,而Server會依需求與資料庫做溝通,並回傳Applet要求之資料,如此可以做成多層式的架構來解決Applet資料取得之問題。

AppletWeb1.jpg

範例設計上有一個輸入框JTextField可以輸入要傳給Server的資料內容,而下方的JTextArea是承接從Server回傳的資料內容,按鈕則可進行動作Action。

Read More

HttpURLConnection來實作檔案或圖片下載

這個範例與之前的HttpURLConnection來實作get及post動作基本原理是一樣的,一個是使用java.io.BufferedReader來取得文字的html內容,而這個範例則是使用java.io.InputStream取得binary的檔案內容。

程式的流程大概是,先建立HttpConnection,給Connection標題Header、Referer、Cookie等內容,然後建立連線,跟伺服器request要求內容,再取得http的InputStrem,要取得伺服器response的內容,把內容讀取byte[],然後寫入檔案,如此就完成下載檔案的動作了。

Read More

[Java]利用URLConnection檢查網站狀態

java.net.URLConnection是一個Http Connecion物件,可以用來連接網站,並處理回傳的資訊資料,當然也可以使用socket連線來做這些事情,不過會顯的麻煩多了。

利用java.net.URLConnection可以直接取得response的Status來判斷網站是不存在、連線錯誤、無法存取,而如果需要更詳細的回傳資訊可以增加給於的Header。而如果需要取得網址的ip則可使用java.net.Inet4Address.getByName(網址名稱)

有一點要注意的是在JDK1.4以前並有沒有setReadTimeout這個函數,所以需要自己實作一個HttpURLConnectionTimeout來操作TimeOut,可以參考Adding Socket Timeout to java.net.URLConnection這一篇。

這是範例的結果:

char.png

Read More

[Java]簡單的Socket Client Server

這是一個超簡單的Client Server範例,Server部份利用Thread來常駐執行,而Client利用Socket去連接指定的port,送出一個字元組給OutputStream,而Server接收到請求後,使用InputStream來取得資料。

這裡有篇介紹Socket Server的原理Thread應用-Java SocketServer,還有一篇傳送物件Serializable序列化Socket傳送範例,這篇算是比較進階。

程式碼包裝在jar裡,利用二個command視窗,一個執行Server一個執行Client,結果如下:

Java Socket Client Server

原始碼及jar下載:


點我下載

Read More