RSS擷取方式針對有提供『RSS資訊服務』的
遠端Web站台之用,在本文中對於採用的RSS服務
例子有『新竹即時天氣』查詢功能,MSN機器人
接收到用戶的訊息要求後,將其丟往後端『知識
發布模組』進行處理,由『知識發布模組』對中
央氣象局新竹天氣預報的RSS網址
http://www.cwb.gov.tw/rss/forecast/36_06.xml 提出連
線要求,取得XML格式的訊息資料後進行字串解
析,完成後回傳給MSN機器人,再由MSN機器人
往用戶端傳送並呈現在其MSN對話視窗中。
B. 擷取遠端網頁內容
雖然RSS資訊服務可以讓我們很方便的擷取我
們想要的資訊,但並非每一個站台都會提供RSS資
訊服務,這時我們只能直接去擷取該網頁的內
容,分析去除我們不需要的內容後,將過濾的結
果呈現給使用者,但由於遠端站台所提供的內容
並沒有所謂標準格式可言,比如網頁有多種語
言,例如:JAVA、HTML、PHP、ASP等,所以採
用此種直接擷取網頁方式,過濾出所要得資訊是
比較費工的。而且對方站台若重新設計其網頁,
有可能我們也需一併修改程式,避免其功能失
效。
擷取遠端網頁可用的語法有很多種,各種語
言有其專門的物件可供使用,在本系統中因採ASP
語言開發,語法為XMLHTTP及ServerXMLHTTP這
兩種,但由於XMLHTTP在微軟的設計上,比較適
合客戶端的應用程式之用,並相依在Microsoft
Win32 Internet(WinInet)的元件上,而
ServerXMLHTTP較適合用於伺服器上,所以基於其
適用性及穩定性關係,我們使用的語法為
ServerXMLHTTP。
有關ServerXMLHTTP的使用,參考『Microsoft
技術支援』[9]說明可知,它所提供的方法
(methods)及屬性(properties),能讓我們在不同的
Web伺服器之間建立HTTP方式的連線,其優點如
下:
● 利用 ServerXMLHTTP 可以為資料流或 XML
文件的本機和遠端系統之間交換 XML 資
料。
如此表示我們可以透過此種方式輕易與遠端
站台傳送及取得資料。
● 因為基礎的通訊協定是 HTTP 或 HTTPS,基
本可連入防火牆背後的系統之間交換資料。
因為一般網頁服務需要開啟HTTP(Port 80)或
HTTPS(Port 443),所以代表此網頁服務的機
器是可以提供對外連線,採用
ServerXMLHTTP也是模擬Browser連線去對
方站台取得資料。
● ServerXMLHTTP 可用來從不同的環境,例
如動態伺服器網頁 (ASP)、 Microsoft Visual
Basic 和 Microsoft Visual C++ 傳送 HTTP 要
求。
適用於微軟各種開發工具,相容性高。
相關使用ServerXMLHTTP的程式碼如下:
Dim objXMLHTTP, strReturn
Set objXMLHTTP = 網址
Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
objXMLHTTP.Open "GET", Linkdic
objXMLHTTP.Send
strReturn =objXMLHTTP.responseBody
我們定義了objXMLHTTP及strReturn兩個變
數,再利用Set指令將 objXMLHTTP與
Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
物件產生關聯後,使用Open method,初始化連線
要求及定義URL網址,再利用Send method送出,而
遠端站台所回傳的資訊則透過ServerXMLHTTP的
responseBody屬性接收存入strReturn中,由後續程序
對該變數內容進行分析處理,如過濾HTML碼及取
得我們所要的資料欄位。
C. 直接存取資料庫
若遠端服務系統管理者同意提供SQL存取權
限,就可直接利用SQL指令建立連線存取遠端資料
庫,取得欲呈現的資料。
模組4. MSN機器人模組
將MSN帳號註冊系統與竹教校園入口網
(http://sso.nhcue.edu.tw)整合:
圖9. MSN註冊頁面
如上圖所示,透過單一入口網,學生身份驗
證在登入時,入口網立即將使用者所輸入的帳號
及密碼與後端LDAP系統進行驗證[11],通過後就
完成身份確認動作,點選『MSN機器人』頁面會
留言