Apache Axis2を使ったWebサービスの構築

- NETクライアント・アプリの構築 -

ホーム
Axis2開発環境の構築 Axis2運用環境の構築 自作Webサービスの作成.
NETクライアント・アプリの構築 Java クライアント・アプリの構築 チューニング



「サーバサイド・アプリの構築」で示したWebサービスに接続するVB.NETクライアント・アプリを作りました。

VB.NET(Microsoft Visual Basic 2005 Express Edition)ここからインストールできます。

1.VBプロジェクトの作成

  まずプロジェクトを作成します。

   

  作成したら、適当な場所にセーブ(ctrl+shift+s)してください。このサンプルでは、以下の場所に保管する事にします。 

   

 

2.ボタンの追加

  ツールボックスをCtrl + Alt + xを押して表示したら、ボタンを追加して下さい。

  追加すると以下のようになります。

  

 

3.Web参照の追加

  プロジェクトから「Web参照の追加」を選択します。

    

   URLに 「サーバサイド・アプリの構築」で作成したWebサービスのURLを指定します。

   このサンプルではLinuxサーバ(mika)に構築したのでURLは以下になります。  

   http://mika/axis2/services/rjdbcService?wsdl

   URLを入力後に   を押すと以下の画面が出力されされます。 

   この画面はBASIC認証のユーザ名とパスワードを聞いて来ているので入力します。(guest/password)

      

   参照出来たら「Web参照名」に名前が出ているので(任意に名前を変更し)「参照の追加」を押下します。

  

4.WEBサービスへの接続

いよいよ本題のWebサービス接続部分を作成します。

まず、Button1をダブルクリックし表示されるコード中にロジックを追記していきます。  

以下に完成したソースを示します。

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 Try
   ''1)Web サービスのインスタンスを取得(mikaは自動生成したプロキスクラス)

   Dim service As New mika.rjdbcService()

   ''2)接続先URLを設定
   service.Url = "http://mika/axis2/services/rjdbcService"

   ''3)HTTPセッションを作成(これを生成するとセッションを維持出来る)
   service.CookieContainer = New System.Net.CookieContainer()

   ''4)DBコネクション・オープン
   service.openConnection()

   ''5)Webサービスで提供されている複合型クラスの変数を作成する(送信用)
   Dim request As mika.Request = New mika.Request()
   request.message = "select * from rjdbc"

   ''6)Webサービスで提供されている複合型クラスの変数を作成する(受信用)
   Dim response() As mika.Response

   ''7)SELECT結果を受け取る(2次元配列で)
   response = service.select(request)

   ''8)配列をDEBUG表示する
   Dim i
   Dim j
   For i = 0 To response.Length - 1
    For j = 0 To response(i).row.Length - 1
     Debug.Print(response(i).row(j).message)
    Next j
   Next i

   ''9)DBコネクション・クローズ
   service.closeConnection()

 Catch ex As Exception
  Debug.Print("例外が発生しました:" + ex.ToString)
 End Try

End Sub
End Class

上記を見て分かるとおり、.NETでWEBサービスに接続するのは非常に簡単です。

ポイントは以下になると思います。

・ステートフル・セッションを実装したい場合には、System.Net.CookieContainer()をプロキシのCookieContainerに設定する

・サービスの結果(service.selectの結果)が複合型の場合でも、クラスで受け取れるので大丈夫。


戻る