Visual Studio 2005 クライアントを使用した SOAP 要求の送信 (Visual Basic)
このトピックで使用する例は、「Visual Studio 2005 クライアントを使用した SOAP 要求の送信 (C#)」で使用している例と同じです。異なる点は、Visual Basic で記述されていることだけです。したがって、このトピックには例を作成するために必要なコードおよび手順のみを記載します。
作業用サンプルの作成
このサンプルを作成するには多くの手順が必要なので、アプリケーションを 4 つに分割します。
- 作業 1: ストアド プロシージャの実行
- 作業 2: パラメータを指定しない SQL クエリの実行
- 作業 3: パラメータを指定した SQL クエリの実行
- 作業 4: ユーザー定義関数の実行
手順はそれぞれの作業で説明します。各作業が終了した時点で、アプリケーションをテストできます。
必要なプロキシ クラスを作成するには
- このアプリケーションのためのフォルダをコンピュータに作成します。
- クライアント コンピュータで、[スタート] ボタンをクリックし、[すべてのプログラム] をポイントします。次に、[Microsoft Visual Studio 2005] の Microsoft Visual Studio 2005 を起動します。
- [新しいプロジェクト] をクリックします。
- [プロジェクトの種類] ボックスの一覧の [Visual Basic プロジェクト] をクリックします。
- [名前] ボックスに、「NativeSOAPApp2」と入力します。
- [場所] ボックスに、プロジェクトを保存するフォルダ パスを指定します。
- [テンプレート] ボックスの一覧の [Windows アプリケーション] をクリックし、[OK] をクリックします。
- ソリューション エクスプローラで、[参照設定] を右クリックし、[Web 参照の追加] をクリックします。[プロジェクト] メニューの [Web 参照の追加] をクリックして Web 参照を追加することもできます。
- [アドレス] ボックスに「https://Server/sql?wsdl」 (Server はサーバー名) と入力し、Enter キーを押します。WSDL の生成が成功したら、エンドポイントの説明が表示されます。ここで、[参照の追加] をクリックします。この操作により、WSDL ドキュメント内でメソッドを呼び出すために必要なプロキシ クラスが作成されます。
作業 1: ストアド プロシージャの実行
この作業では、アプリケーションから GetCustomerInfo Web メソッドを要求します。
- Form1 に、テキスト ボックス (textBox1)、ボタン (button1)、およびリスト ボックス (listBox1) を追加します。
- テキスト ボックスを右クリックし、[プロパティ] をクリックします。Text の値を textBox1 から 1 に変更します。これは顧客 ID の既定値です。
- [button1] を右クリックし、[プロパティ] をクリックします。
- Text プロパティの値を button1 から ExecSP に変更します。
- (name) プロパティの値を ExecSP に変更します。
- リスト ボックス (listBox1) を右クリックし、[プロパティ] をクリックします。HorizontalScrollbar プロパティの値を True に変更します。
- [ExecSP] をダブルクリックします。
- 「ExecSP の Visual Basic コード リスト」のコードをこの関数にコピーします。
- コードを更新します。
server
への参照を、CREATE ENDPOINT を使用してエンドポイントを作成したときに指定したホスト名に変更します。 - プロジェクトを保存してコンパイルします。詳細については、前の「コードのコンパイル」を参照してください。
作業 2: パラメータを指定しない SQL クエリの実行
この作業では、AdventureWorks データベースの Employee テーブルから、3 人の従業員を取得するためのアドホック クエリ (FOR XML クエリ) をクライアント アプリケーションで実行します。
- Form1 の [デザイン] タブで、別のボタン (button1) を追加します。
- 新しいボタンを右クリックし、[プロパティ] をクリックします。
- Text プロパティの値を button1 から ExecBatchFindAllEmps に変更します。
- (name) プロパティの値を ExecBatchFindAllEmps に変更します。
- [ExecBatchFindAllEmp] をダブルクリックします。
- 「FindAllEmps の Visual Basic コード リスト」のコードをこの関数にコピーします。
- コードを更新します。
server
への参照を、CREATE ENDPOINT を使用してエンドポイントを作成したときに指定したホスト名に変更します。 - プロジェクトを保存してコンパイルします。詳細については、前の「コードのコンパイル」を参照してください。
作業 3: パラメータを指定した SQL クエリの実行
この作業は、アドホック クエリの SOAP 要求にクエリ パラメータが含まれている点を除き、前の作業と同じです。FOR XML クエリで、指定した従業員 ID の従業員についての情報を取得します。
- Form1 の [デザイン] タブで、ボタン (button1) を追加します。
- 新しいボタンを右クリックし、[プロパティ] をクリックします。
- Text プロパティの値を button1 から ExecBatchFindAnEmp に変更します。
- (name) プロパティの値を ExecBatchFindAnEmp に変更します。
- [ExecBatchFindAnEmp] をダブルクリックします。
- 「FindAnEmp の Visual Basic コード リスト」のコードをこの関数にコピーします。
- コードを更新します。
server
への参照を、CREATE ENDPOINT を使用してエンドポイントを作成したときに指定したホスト名に変更します。 - プロジェクトを保存してコンパイルします。詳細については、前の「コードのコンパイル」を参照してください。
作業 4: ユーザー定義関数の実行
この作業では、クライアント アプリケーションから UDFReturningScalar Web メソッドの SOAP 要求を送信します。この Web メソッドは、整数値を返すユーザー定義関数に対応します。
- Form1 の [デザイン] タブで、別のボタン (button1) を追加します。
- 新しいボタンを右クリックし、[プロパティ] をクリックします。
- Text プロパティの値を button1 から ExecUDFReturningScalar に変更します。
- (name) プロパティの値を ExecUDFReturningScalar に変更します。
- [ExecUDFReturningScalar] をダブルクリックします。
- 「ExecUDF の Visual Basic コード リスト」のコードをこの関数にコピーします。
- コードを更新します。server への参照を、CREATE ENDPOINT を使用してエンドポイントを作成したときに指定したホスト名に変更します。
- プロジェクトを保存してコンパイルします。詳細については、前の「コードのコンパイル」を参照してください。
エンドポイントでは統合認証が指定されているので、コードには "proxy.Credentials = System.Net.CredentialCache.DefaultCredentials
" と記述されます。
SQL Server 認証を使用する場合は、この行を削除し、指定した SQL Server 認証の資格情報に WS-Security ヘッダーを実装するコードで置き換えることをお勧めします。詳細については、「SOAP 経由の SQL 認証」を参照してください。
メモ : |
---|
SQL Server 認証または基本認証のいずれかを使用している場合、SQL Server 2005 ではユーザーの資格情報をセキュリティで保護し暗号化した通信を行うために、通信内容をクリア テキストとして表示できない SSL (Secure Sockets Layer) を使用する必要があります。HTTP エンドポイントで SSL を使用できるようにする方法の詳細については、「SSL に使用する証明書の構成」を参照してください。 |
コードのコンパイル
SQL Server 2005 をインストールすると、インストール処理の一部として Microsoft .NET Framework 2.0 がインストールされます。次のコンパイル手順では、最新の .NET Framework (\WINDOWS\Microsoft.NET\Framework フォルダで最も番号が大きいバージョン) を使用します。
コードをコンパイルするには
- プロジェクト全体を保存します。
コマンド プロンプトを開き、プロジェクトが保存されているフォルダに移動します。
そのフォルダから、Web Reference\Server サブフォルダの Reference.vb ファイルをコピーします (たとえば、"Web Reference\Server\Reference.vb" をコピーします)。Form1.vb ファイルおよび Reference.vb ファイルを同一のフォルダに配置します。
コードをコンパイルして、実行可能 (.exe) ファイルの名前を指定します。たとえば、実行可能ファイルの名前が NativeSOAPApp2.exe である場合、コマンド ラインに次のように入力します。
\WINDOWS\Microsoft.NET\Framework\v2.0.xxxxx\vbc.exe /out:NativeSOAPApp2.exe /r:System.dll /r:System.Data.dll /r:System.Xml.dll /r:System.Web.Services.dll /r:Microsoft.VisualBasic.dll /r:System.Drawing.dll /r:System.Windows.Forms.dll /m:Form1 Form1.vb Reference.vb
xxxxx は、.NET Framework のバージョンに対応するフォルダ番号です。
このコマンドを実行すると、現在のディレクトリに実行可能ファイル (NativeSOAPApp2.exe) が作成されます。メモ : 以前のバージョンの .NET Framework を使用している場合、ランタイム エラーが発生することがあります。エラーが発生する場合、次のように SELECT
ステートメントの末尾にFOR XML AUTO
句を追加することで、GetCustomerInfo ストアド プロシージャを更新してください。SELECT TOP 3 SalesOrderID, OrderDate FROM SalesOrderHeader WHERE CustomerID = @CustomerID FOR XML AUTO
ストアド プロシージャの実行結果がリスト ボックスに表示されます。
参照
関連項目
ネイティブ XML Web サービス要求をリッスンするためのサーバーの設定
SOAP の要求メッセージと応答メッセージの構造
ネイティブ XML Web サービス要求を送信する場合のサンプル アプリケーション
ネイティブ XML Web サービスのガイドラインと制限事項