*
   原稿 (英文)

使用 Visual Basic .NET 存取 Google 的 Web 服務

學習如何從 Visual Basic .NET Windows 前端存取 Google Web API 服務。本文會說明如何呼叫 SOAP Web 服務、執行 Google 搜尋、存取 Google 快取中的網頁,以及呼叫 Google 拚字檢查。(列印共 5 頁)

MSDN Code Center (英文) 下載 VBGoogleDemo.exe。

下載範例 (英文)

內容

Web 服務帥呆了
範例表單
程序
例外處理的注意事項
結論
如何取得套件和授權識別碼

Web 服務帥呆了

Web 服務 (英文) 是 Internet 和商務領域中,最令人興奮的新科技。這些服務可以讓企業間以標準方式相互連接、以 Internet 做為傳輸管道,透過防火牆執行遠端程序呼叫。Google 已率先提供公用 Web 服務之一,可以讓任何開發人員存取 Google 的搜尋、快取及拚字檢查服務。Visual Studio .NET 讓 Google Web API 服務所提供的各項功能,變得更容易存取 。

範例表單

[圖 1] 顯示簡單表單的介面。其中包含輸入 Google 授權識別碼的文字方塊 (請參閱副文〈如何取得 Google Web API 套件與授權識別碼〉,以及測試三種 Google 功能的三個區段。第一個區段可讓您輸入搜尋文字,傳回結果數目。第二個區段可讓您輸入網站,傳回 Google 快取中該頁的大小。第三個區段稱為 Google 拚字檢查功能,會傳回檢查後的值。

[圖 1] 執行的表單

程序

即然已看過表單的功用,接下來要看看撰寫程式碼的相關步驟。主要有四個步驟:

  • 參考 Web 服務
  • 建立執行搜尋的函式
  • 建立執行快取大小檢查的函式
  • 建立呼叫拚字檢查的函式

參考 Google Web 服務

以下是參考 Google Web 服務的步驟:

  1. 建立新的 Windows Form 專案。
  2. 在專案上按一下滑鼠右鍵。
  3. 選取 [加入 Web 參考]。
    注意   [加入 Web 參考] 選項就像 Visual Basic 6 [加入參考] 一樣,唯一不同的是您可以存取位於不同網路上的 XML Web 服務,而非 COM 元件中的方法。更好的是,如此的存取具型別,而且就像存取任何區域物件 (Local Object) 一樣地會觸發 Intellisense。
  4. 在 [位址] 文字方塊中輸入 Web 服務描述的位置 (http://api.google.com/GoogleSearch.wsdl)。
  5. 按一下 [加入參考] 按鈕來匯入 Web 服務定義。
  6. 匯入之後,移至方案總管,開啟樹狀目錄上的 [Web 參考] 節點。
  7. 在 Google 的參考上按一下滑鼠右鍵,然後選取 [重新命名],將參考重新命名。
  8. 描繪上面所示的表單。

加入每個按鈕的程式碼。 按兩下每個按鈕 (像 Visual Basic 6 一樣) 可以存取引發按一下事件時執行的方法。讓我們依序來看看每一項。

執行 Google 搜尋

看看 [清單 1] 裡 btnSearch_Click 方法的程式碼,即可看到新建立的 GoogleSearchService 物件。下一行則建立了一個新的 GoogleSearchResult 物件,並且使用以一行宣告和建立物件的新 Visual Basic .NET 功能。在 Visual Basic .NET 中,下列兩個片段是相等的:

Dim x As String = "您好"

Dim x As String
x = "您好"

建立 result 物件 (透過傳遞 Google 授權識別碼、搜尋文字和其他參數至搜尋物件所建立) 之後,會使用 estimatedTotalResultsCount 屬性填寫標籤。程式碼的四行中呼叫跨越 Web 的程序、執行 Google 搜尋,並且發佈結果數目。

這個範例是搜尋服務的簡單應用。如需搜尋要求和傳回資料之參數的詳細資訊,請參閱 Google 的參考文件。

' 建立 Google 搜尋物件。
Dim s As New Google.GoogleSearchService()
' 叫用搜尋方法。
Dim r As Google.GoogleSearchResult = 
   s.doGoogleSearch(txtLicenseKey.Text, txtSearchTerm.Text, 0, 1, _
   False, "", False, "", "", "")
' 擷取及顯示搜尋的預估結果數目
Dim estResults As Integer = r.estimatedTotalResultsCount
lblSearchResults.Text = CStr(estResults)

[清單 1] btnSearch_Click 方法

取得網頁的大小

從 [清單 2] 可以看出,要取得 Google 伺服器上快取內網頁的大小很容易。在此例中會呼叫 doGetCachedPage 方法,並指定至位元組陣列。然後詢問該陣列其長度。

' 建立 Google 搜尋物件
Dim s As New Google.GoogleSearchService()
' 叫用 doGetCachedPage 方法並取得快取的位元組
Dim bytes() As System.Byte = _
     s.doGetCachedPage(txtLicenseKey.Text, txtCachePage.Text)
' 顯示快取之網頁的長度
lblCacheResults.Text = CStr(bytes.Length)

[清單 2] btnCache_Click 方法

執行拚字檢查

最後一個 Google 方法會呼叫 Google 引擎的拚字檢查功能。呼叫 GoogleSearchService 物件上的 doSpellingSuggestion 方法,如果有結果,只要加以顯示。

' 建立 Google 搜尋物件
Dim s As New Google.GoogleSearchService()
' 要求拚字建議
Dim suggestion As String = _
     s.doSpellingSuggestion(txtLicenseKey.Text, txtSpell.Text)
' 如果有建議,顯示建議
If suggestion Is Nothing Then
     lblSpellResults.Text = "<no suggestion>"
Else
     lblSpellResults.Text = suggestion
End If

[清單 3] btnSpell_Click 方法

例外處理的注意事項

下載的程式碼會將每一個函式包含在 Try...Catch 區塊中 (請參閱 [清單 4])。此區塊可讓我們設限從 SOAP Web 服務傳回的任何錯誤,並在 MsgBox 中顯示。最常會收到的錯誤,通常會發生在您忘了包含授權識別碼。若要取得授權識別碼,請參閱〈如何取得套件和授權識別碼〉。

' 建立 Google 搜尋物件
Dim s As New Google.GoogleSearchService()
Try
    ' 叫用 doGetCachedPage 方法並取得快取位元組
    Dim bytes() As System.Byte = _
        s.doGetCachedPage(txtLicenseKey.Text, txtCachePage.Text)
    ' 顯示快取之網頁的長度
    lblCacheResults.Text = CStr(bytes.Length)
Catch ex As System.Web.Services.Protocols.SoapException
        MsgBox(ex.Message)
End Try

[清單 4] 具有例外處理的 btnCache_Click 方法

結論

Visual Basic .NET 簡化了在 Web 上存取 Web 服務的方法。將此功能加入您的百寶袋中,即可讓您實現各種新的功能 – 就像新增 COM 物件和 ActiveX 控制項曾經為您的 Visual Basic 6 應用程式添增新功能一樣。您也可以嘗試在 Web 架構留言版新增 Google 拚字檢查功能,或自動監視網路上關於特定議題的新發展。如需更多點子,您可以搜尋 Web (試試搜尋「VB Google API applications」一詞),以尋找其他 VISUAL BASIC 開發人員運用 Google Web API 所完成的應用程式。祝您玩得開心!

如何取得套件和授權識別碼

若要存取 Google Web API 工具套件及要求授權識別碼,請至 http://www.google.com/apis/,並遵照步驟申請。您可以下載開發人員套件及建立自己的 Google 帳戶,只要經過電子郵件驗證,就會提供您每天能執行 1,000 次免費查詢的授權。