HOME    PRODUCTS    TECHNOLOGY    COMPANY    SUPPORT
利用方法

Captcha Audio - XML Webサービス利用方法

ここでは、アクエストが試験的に提供する、音声認証用のXML Webサービスを使って、お使いのPC上に、 音声認証のサンプルページを構築する方法について説明します。

XML Webサービスとは、XMLやHTTPなどの標準プロトコルを利用して、ネットワーク経由で各種のサービスを提供する分散オブジェクト技術のひとつです。

 動作環境

Microsoft Visual Web Developer 2005 Express Edition(無償)がインストールされていること

 プログラミング

XML Webサービスをはじめて使用される場合は、 ヘルプ/ Webサービスをはじめて使用される場合は、
Visual Web Developer 2005のヘルプ
 Visual Web Developer チュートリアル : Visual Web Developer での ASP.NET Web サービスの作成と使用 を、事前に参照しておくと良いと思います。

新しいWeb サイトを作成します
  1. [ファイル] メニューの [新しい Web サイト] をクリックします
  2. [Visual Studio にインストールされたテンプレート] の [ASP.NET Web サイト] をクリックします。
  3. [参照] をクリックします。
  4. [ファイルシステム] をクリックします。Webサイトを作成する任意のフォルダ名を指定します。 ここでは、「AudioCaptchaWeb」という名前を入力します。
  5. Webサイトを作成する任意のフォルダ名を指定します。
    ここでは、「AudioCaptchaWeb」という名前を入力します。
  6. [開く] をクリックします。
  7. [OK] をクリックします。
AudioCaptchaWebフォルダに、 Default.aspx という名前の新しいページが作成されます。


Webサービス参照の指定

  1. ソリューション エクスプローラで、Web サイトの名前を右クリックし、[Web 参照の追加] をクリックします。
  2. [Web 参照の追加] ダイアログ ボックスが表示されます。
  3. [URL] ボックスに次の Web サービスの URL を入力し、[移動] をクリックします。

    http://aquest.dyndns.org/CaptchaAudioWS/CaptchaAudio.asmx

  4. Web サービスが見つかると、この Web サービスに関する情報が [Web 参照の追加] ダイアログ ボックスに表示されます。
  5. [Web参照名]に 「TestWebService」と入力します

    Web参照追加ダイアログ
    クリックで拡大
  6. [参照の追加] をクリックします。
App_WebReferences フォルダが作成され、このフォルダの中に新しい Web 参照用のフォルダが追加されます。 この場合は [TestWebService]フォルダとなります。

このフォルダの中に、Web サービスを参照する CaptchaAudio.wsdl ファイルが追加されます。
また、Web サービスが配置されている場所に関する情報が記述されている 検索ファイル (CaptchaAudio.disco および CaptchaAudio.discomap) などのサポート ファイルも追加されます。


コントロールとイベントハンドラの追加
  1. Default.aspxのデザインビューに切り替えて、 次のように、ツールボックスの[標準]からTextBox、Buttonを貼り付けます Default.aspxのデザインビューに切り替えて、下図のように、ツールボックスの[標準]からTextBox、Buttonを貼り付けます

    コントロール貼付け 
    クリックで拡大
  2. Buttonをダブルクリックすると、イベントハンドラの編集画面になるので、Button1_Click()関数にコードを追加します。
    また、ここでは音声データを再生するのにWin32のDLLを使用しましたので、
    using System.Runtime.InteropServices と、[DllImport("winmm.dll")]以下の数行を追加します。

    Default.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Runtime.InteropServices;   // ←ADD DllImport

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }


    [DllImport("winmm.dll")]
    private static extern int PlaySound(
        [MarshalAs(UnmanagedType.LPArray)] byte[] pszSound,
                                    int hModule, int dwFlags);
    private const int SND_ASYNC = 0x1;
    private const int SND_MEMORY = 0x4;


    protected void Button1_Click(object sender, EventArgs e)
    {
        string pass = TextBox1.Text;

        TestWebService.CaptchaAudio ca = 
		new TestWebService.CaptchaAudio();
        byte[] wav = ca.getCaptcha(pass);

        PlaySound(wav, 0, SND_MEMORY | SND_ASYNC);
    }
}
テスト実行
  1. Ctrl キーを押しながら F5 キーを押してページを実行します。
  2. テキスト ボックスに「1234ABC」などの英数字を入力し、[Button] をクリックします。
音声が聞こえればOKです。
英数以外の文字列を与えた場合は、getCaptcha()がNULLを返すため、音は鳴りません。