Visual 2010 C# 自動登入遠端 IP Camera
今天又接到一個新任務, 為 IP Camera 撰寫遠端監控程式, 現在 IP Camera 無論是有線無線的使用量都很大,要能連接 IP Camera 最先要能解決的就是自動登入,目前多半的 IP Camera 都有一個小型的 Web Server 方便大家遠端設定及連線,所以要設定應該就是用 Http Web 的 Protocol 來聯就可以。
首先先連進去看Ip Camera 自己用瀏覽器如何顯示畫面,並找出產生圖像的位置,這台 Ip Camera 是產生 MJPEG,所以應該可以假設產生圖樣的程式是 *.cgi,果然沒錯用 Chrome 瀏覽器中的檢查元素就找到了:
先打開 Visual 2010 C#,開啟一個 Window Application Form,為了方便測試,先設一個按鈕及文字方塊用來顯示傳回的資訊,HttpWebRequest 是定義在 System.Net 中,所以要先加一行:
傳回這個錯誤很正常,因為我還沒加入任何認證的資訊, 401 是未經授權,404 是找不到,這些錯誤訊息很容易在網路上找到,還有一個是無法連線到遠端伺服器,如果一切正常傳會來的應該是 200 OK , 因為會有 "無法連線到遠端伺服器" 的可能性,所以應先加上逾時值 (Timeout):
我目前要測的這一款 IP Camera,還可以遠端遙控及夜視功能,不過問題一步一步解決,下面就是我要處理的 IP Camera:
Wifi IP Camera |
找到負責圖像顯示的videostream.cgi |
先打開 Visual 2010 C#,開啟一個 Window Application Form,為了方便測試,先設一個按鈕及文字方塊用來顯示傳回的資訊,HttpWebRequest 是定義在 System.Net 中,所以要先加一行:
Using System.Net;
接著定義:
HttpWebRequest req;
HttpWebResponse resp = null;
Uri url = new Uri("http://192.168.1.***/videostream.cgi"); //*** 是為隱藏 IP 位置
req = (HttpWebRequest)HttpWebRequest.Create(url); //Create HttpWebRequest
再來就是 Create HttpWebRespond 了,不過任何有關連線的程式多半都會產生意外斷線或連不上,所以一定要準備處理例外 Exception,我是一個懶人,所以每次都先將 try .... catch .... finally 套入,以後再填入程式碼,
try
{
resp = (HttpWebResponse)req.GetResponse();
}
catch (WebException wex)
{
}
finally
{
}
再把 WebException 顯示在 Textbox中,立即測試就傳回:
傳回未經授權 401 |
傳回這個錯誤很正常,因為我還沒加入任何認證的資訊, 401 是未經授權,404 是找不到,這些錯誤訊息很容易在網路上找到,還有一個是無法連線到遠端伺服器,如果一切正常傳會來的應該是 200 OK , 因為會有 "無法連線到遠端伺服器" 的可能性,所以應先加上逾時值 (Timeout):
req.Timeout = 50;
設定 Timeout 後,如超過設定值會傳回 "作業逾時"。
大框架有了,接著就是要把認證的資料放到 HttpWebRequest 中,我是使用 credential 的方式放入的:
req.Credentials = new NetworkCredential("user", "password");
大框架有了,接著就是要把認證的資料放到 HttpWebRequest 中,我是使用 credential 的方式放入的:
req.Credentials = new NetworkCredential("user", "password");
再次測試連線傳回了 "OK",這下簡單的登入算是完成了,不過這樣的 HTTP Request Header 對一些嚴謹的 WEB Server可是不夠的。到這又要暫告一段落,因為又要去談案子。
留言
張貼留言
請多指教