次の方法で共有


チュートリアル : Visual Basic または Visual C# を使った Web サービスへのアクセス

次のチュートリアルでは、Visual Basic または Visual C# を使って作成されたアプリケーションから Web サービスにアクセスする手順について説明します。

このチュートリアルでは、次の操作を行います。

  • ASP.NET Web アプリケーション プロジェクトのテンプレートを使ってクライアント アプリケーションを作成する。

  • Web サービスに Web 参照を追加する。

  • Web サービスにアクセスするコードを記述する。

  • Web アプリケーションをデバッグ モードで実行する。

  • Web アプリケーションを配置する。

チュートリアルを完了するには、次の情報を指定する必要があります。

  • このチュートリアルでは、Web アプリケーションを使って Web サービスにアクセスするため、Web プロジェクトを作成するための要件を満たしたコンピュータを用意する必要があります。Web サーバーが置かれているコンピュータ上で Web サービス プロジェクトを作成するには、十分なアクセス許可も必要です。

  • 次のチュートリアルで作成された Web サービス。

Web サービス クライアント プロジェクトの作成

このチュートリアルでは、「チュートリアル : Visual Basic または Visual C# を使った Web サービスの作成」で作成した TempConvert1 という名前の Web サービスにアクセスする単純な Web アプリケーションを作成します。

xb5th1ba.alert_note(ja-jp,VS.90).gifメモ :

この温度換算用 Web サービスの作成時にその名前を変更した場合は、このチュートリアル全体で名前 TempConvert1 をそのまま適切な名前に置き換えてください。

ASP.NET Web アプリケーションを作成するには

  1. [ファイル] メニューの [新規作成] をポイントし、[Web サイト] をクリックします。

  2. [新しい Web サイト] ダイアログ ボックスで、[ASP.NET Web サイト] アイコンをクリックします。

  3. Web アプリケーションを開発する Web サーバーのアドレスを入力し、ディレクトリ名を TempConvertClient1 と指定します。たとえば、「http://MyServer/TempConvertClient1」と入力します。既定では、プロジェクトにはローカル コンピュータ (https://localhost) が使用されます。

    xb5th1ba.alert_note(ja-jp,VS.90).gifメモ :

    プロジェクトの種類によっては、場所を指定することでプロジェクト名を設定するため、[プロジェクト名] ボックスが使用できません。たとえば、Web アプリケーションや Web サービスは Web サーバーにあり、そのサーバーで指定された仮想ディレクトリに基づいて名前が設定されます。

    xb5th1ba.alert_note(ja-jp,VS.90).gifメモ :

    Web アプリケーションは、開発サーバー上で開発されます。既定では、ローカル コンピュータが開発サーバーになります。通常、プロジェクトは、開発サーバー上で開発されてビルドされた後、別のサーバー (デプロイメント サーバー) に配置されます。デプロイメント サーバーは、配置プロジェクトを使用して Web アプリケーションをホストします。ただし、Web アプリケーションをホストするサーバー上で直接開発する場合、開発サーバーとデプロイメント サーバーは同じになります。

  4. [OK] をクリックして、プロジェクトを作成します。

  5. ソリューション エクスプローラで Default.aspx を右クリックし、[デザイナの表示] をクリックしてデザイナを開きます。

  6. [ツールボックス] の [Web フォーム] タブから、TextBoxLabel、および Button を 1 つずつ、Default.aspx のデザイン サーフェイスにドラッグし、必要に応じて位置を調整します。

  7. 追加したボタン (Button1) を右クリックし、ショートカット メニューの [プロパティ] をクリックします。[プロパティ] ウィンドウで、Text プロパティを Convert に設定します。

  8. 追加したラベル (Label1) を右クリックし、ショートカット メニューの [プロパティ] をクリックします。[プロパティ] ウィンドウで、Text プロパティをクリアして、このラベルを空白にします。

Web 参照の追加

Web サービスの探索とは、クライアントが Web サービスの場所を見つけ、そのサービスの説明を取得するプロセスです。Visual Studio の Web サービス探索プロセスでは、あらかじめ定められたアルゴリズムに従って、Web サイトへ問い合わせが行われます。このプロセスの目標は、サービスの説明を見つけることです。サービスの説明は、Web サービス記述言語ツール (WSDL: Web Services Description Language) を使用する XML ドキュメントです。詳細については、「XML Web サービス探索」を参照してください。

サービスの説明には、利用できるサービスの種類と、それらのサービスと対話する方法が記述されています。サービスの説明がないと、プログラムから Web サービスと対話することはできません。詳細については、「XML Web サービスの説明」を参照してください。

アプリケーションには、Web サービスと通信し、その場所を実行時に見つけるための手段が必要です。Web サービスへの Web 参照をプロジェクトに追加した場合、プロキシ クラスを生成することで、このアプリケーションに必要な処理を行っています。プロキシ クラスは、Web サービスのインターフェイスとなり、Web サービスのローカル表現を提供します。詳細については、「Visual Studio の Web 参照」および「方法 : Web サービス プロキシを生成する」を参照してください。

Web 参照を追加するには

  1. [Web サイト] メニューの [Web 参照の追加] をクリックします。

  2. [Web 参照の追加] ダイアログ ボックスの [URL] ボックスに、アクセスする Web サービスのサービスの説明を取得するために、その URL を入力します。たとえば、「https://localhost/TempConvert1/Service1.asmx」のように入力します。次に、[移動] をクリックして、Web サービスに関する情報を取得します。

    または

    ローカル コンピュータに Web サービスが存在する場合は、ブラウザ ペインの [ローカル コンピュータの Web サービス] リンクをクリックします。次に、表示される一覧で TempConvert1 Web サービスのリンクをクリックして、この Web サービスに関する情報を取得します。

  3. [Web 参照名] ボックスで、Web 参照の名前を ConvertSvc に変更します。これは、この Web 参照に使用する名前空間です。

  4. [参照の追加] をクリックして、対象の Web サービスに Web 参照を追加します。詳細については、「方法 : リモート Web 参照を追加および削除する」を参照してください。

    Visual Studio は、サービスの説明をダウンロードし、アプリケーションと Web サービスの間のインターフェイスとなるプロキシ クラスを生成します。

Web サービスへのアクセス

Web サービスへの参照をプロジェクトに追加したら、次の手順では、Web サービスのプロキシ クラスのインスタンスを作成します。この処理を行うと、オブジェクトのメソッドにアクセスするときと同様に、プロキシ クラスのメソッドを呼び出して Web サービスのメソッドにアクセスできます。アプリケーションがこれらのメソッドを呼び出すと、Visual Studio が生成したプロキシ クラス コードによって、アプリケーションと Web サービス間の通信が処理されます。

まず、Web サービスのプロキシ クラスのインスタンスを作成します。次に、TextBox1 に指定された値を取得し、プロキシ クラスを使って Web サービスの ConvertTemperature メソッドを呼び出します。その後、Web サービスから返された値を Label1 に表示します。

Web サービスにアクセスするには

  1. WebForm1.aspxConvert ボタンをダブルクリックし、このボタン用のイベント処理メソッドを作成し、分離コード ファイルを表示します。

  2. 次のコードを入力します。

    ' Visual Basic
    Protected Sub Button1_Click(ByVal sender As Object, _
      ByVal e as EventArgs) Handles Button1.Click
        Dim ws As New ConvertSvc.Service
        Dim dFahrenheit As Double
        Dim dCelsius As Double
        Try
            dFahrenheit = Convert.ToDouble(TextBox1.Text)
            dCelsius = ws.ConvertTemperature(dFahrenheit)
            Label1.Text = dCelsius.ToString()
        Catch
            Label1.Text = "Conversion failed."
        End Try
    End Sub
    
    // C#
    protected void Button1_Click (System.Object sender, System.EventArgs e)
    {
       try
       {
          ConvertSvc.Service1 ws = new ConvertSvc.Service1();
          double dFahrenheit = Convert.ToDouble(TextBox1.Text);
          double dCelsius = ws.ConvertTemperature(dFahrenheit);
          Label1.Text = dCelsius.ToString();
       }
       catch
       {
          Label1.Text = "Conversion failed.";
       }
    }
    
    xb5th1ba.alert_note(ja-jp,VS.90).gifメモ :

    Web 参照を追加するときに生成される Web サービス クラスの名前は、前の例での Service1 とは異なる場合があります。

  3. ソリューション エクスプローラで Default.aspx を選択します。

  4. [Web サイト] メニューで、[スタート ページに設定] をクリックします。

  5. ソリューションを保存します。

詳細については、「方法 : マネージ コードを使用して Web サービスにアクセスする」を参照してください。

Web サービス クライアントのデバッグ

Visual Studio には、Web アプリケーションを IDE でビルドおよび実行するための方法が、次のとおり用意されています。

  • デバッグしながら実行する。

  • デバッグせずに実行する。

  • ブラウザで表示する。

Visual Studio プロジェクトとして、この Web アプリケーションは、リリース バージョン用とデバッグ バージョン用にそれぞれ個別の構成を持ちます。このプロジェクトは ASP.NET Web アプリケーション プロジェクトのテンプレートを使って作成されたため、Visual Studio は、これらの構成を自動的に作成し、既定のオプションやその他の設定値を適切に設定しました。詳細については、「方法 : デバッグ構成とリリース構成を設定する」を参照してください。

このチュートリアルでは、Button1_Click イベントにブレークポイントを設定し、デバッグしながら実行する方法を使用します。詳細については、「方法 : マネージ コードを使用して Web サービスをデバッグする」を参照してください。

デバッグを行う前に、デバッグ設定を確認します。詳細については、「デバッグの準備 : ASP.NET Web アプリケーション」を参照してください。

ブレークポイントを使用して、デバッグしながら Web アプリケーションを実行するには

  1. [デバッグ] メニューの [ブレークポイントの作成] をクリックし、[関数でブレーク] をクリックします。

    [Function] ボックスに「Button1_Click」と入力し、[OK] をクリックして Button1_Click イベント ハンドラにブレークポイントを挿入します。詳細については、「ブレークポイントの概要」を参照してください。

  2. [デバッグ] メニューの [デバッグ開始] をクリックし、[デバッグが無効です] ウィンドウで [OK] をクリックしてデバッグを開始します。

    このコマンドは Visual Studio に Web アプリケーションをデバッガで実行するように指示します。Visual Studio はプロジェクトをビルドし、指定されたデプロイメント サーバーに配置します。完了すると、既定のブラウザが起動し、デプロイメント サーバー上にある .aspx ファイルが表示されます。

  3. ブラウザにページが表示されたら、テキスト ボックスに数字で「212」と入力し、Convert ボタンをクリックします。

    処理は Button1_Click イベント ハンドラに到達すると、停止します。Visual Studio デバッガは、ブレークポイントが含まれている行を強調表示します。プログラムを中断している間に、さまざまなタスクを行うことができます。詳細については、「デバッガのロードマップ」および「デバッガでのデータ表示」を参照してください。

  4. [デバッグ] メニューの [続行] をクリックして、処理を続行します。

  5. Web サービスは、変換された値を応答として返します。また、アプリケーションは、Label1 のテキストを 100 に設定します。

    Web アプリケーションを停止してコード エディタに戻るには、[デバッグ] メニューの [デバッグの停止] をクリックします。

  6. [デバッグ] メニューの [すべてのブレークポイントの解除] をクリックします。

クライアントの配置

ほかのユーザーが Web アプリケーションを利用できるように、Web アプリケーションは、サポート対象のクライアントがアクセスできる Web サーバーに配置する必要があります。開発サーバー以外のサーバーに Web アプリケーションを配置するには、Web セットアップ プロジェクトを追加する方法と、デプロイメント サーバーへ必要なファイルをコピーする方法があります。このチュートリアルでは、Web アプリケーションの配置方法を選択できます。詳細については、「アプリケーションとコンポーネントの配置」を参照してください。

Web セットアップ プロジェクトを使用して Web アプリケーションを配置するには

  1. [ファイル] メニューの [追加] をポイントし、[新しいプロジェクト] をクリックします。

  2. [その他のプロジェクトの種類] ノード、[セットアップ/配置プロジェクト] ノードの順に選択し、[Web セットアップ プロジェクト] をクリックします。

  3. [プロジェクト名] ボックスに「TempConvertClient1WebSetup」と入力し、[OK] をクリックします。

    xb5th1ba.alert_note(ja-jp,VS.90).gifメモ :

    既定では、インストーラが配置先のサーバーに仮想ディレクトリを作成するときに、この配置プロジェクトの名前が使用されます。

  4. ファイル システム エディタの左ペインで、[Web アプリケーション フォルダ] を選択します。詳細については、「ファイル システム エディタ」を参照してください。

  5. ソリューション エクスプローラで、[TempConvertClient1WebSetup] を右クリックして [追加] をポイントし、[プロジェクト出力] をクリックします。

  6. [プロジェクト出力グループの追加] ダイアログ ボックスで、[コンテンツ ファイル] を選択します。詳細については、「方法 : ファイル システム エディタでプロジェクト出力を追加および削除する」を参照してください。

    • [コンテンツ ファイル] グループは、Web アプリケーションのその他のファイルで構成されます。たとえば、WebForm1.aspx と Web.config があります。
  7. [OK] をクリックします。

  8. [ソリューション エクスプローラ] で、TempConvertClient1WebSetup プロジェクトを右クリックし、ショートカット メニューの [ビルド] をクリックします。

    これにより、ローカル プロジェクト ディレクトリに Windows インストーラ ファイルが作成されます。このファイルを実行すると、Web アプリケーションがインストールされます。

プロジェクトをコピーして Web アプリケーションを配置するには

  1. [ソリューション エクスプローラ] で TempConvertClient1 プロジェクトを選択します。

  2. [プロジェクト] メニューの [Web サイトのコピー] をクリックします。

  3. [接続先] ボックスの横にあるアイコンをクリックして [Web サイトを開く] ダイアログ ボックスを開きます。プロジェクトをコピーする場所を検索します。

  4. ソース Web サイト ペインでファイルを選択し、右矢印アイコンをクリックすることにより リモート Web サイト ペインにコピーおよび移動します。

  5. [Web サイトのコピー] をクリックして Web サイトをコピーします。

参照

その他の技術情報

Web サービスの作成とアクセスに関するチュートリアル

Visual Studio に関するチュートリアル

Web サービスを利用した Web のプログラミング