Captcha Audio - XML Webサービス利用方法
ここでは、アクエストが試験的に提供する、音声認証用のXML Webサービスを使って、お使いのPC上に、
音声認証のサンプルページを構築する方法について説明します。
XML Webサービスとは、XMLやHTTPなどの標準プロトコルを利用して、ネットワーク経由で各種のサービスを提供する分散オブジェクト技術のひとつです。
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 サイトを作成します
Webサービス参照の指定
このフォルダの中に、Web サービスを参照する CaptchaAudio.wsdl ファイルが追加されます。
また、Web サービスが配置されている場所に関する情報が記述されている 検索ファイル (CaptchaAudio.disco および CaptchaAudio.discomap) などのサポート ファイルも追加されます。
コントロールとイベントハンドラの追加
英数以外の文字列を与えた場合は、getCaptcha()がNULLを返すため、音は鳴りません。
Visual Web Developer 2005のヘルプ
Visual Web Developer チュートリアル : Visual Web Developer での ASP.NET Web サービスの作成と使用 を、事前に参照しておくと良いと思います。
新しいWeb サイトを作成します
- [ファイル] メニューの [新しい Web サイト] をクリックします
- [Visual Studio にインストールされたテンプレート] の [ASP.NET Web サイト] をクリックします。
- [参照] をクリックします。
- [ファイルシステム] をクリックします。Webサイトを作成する任意のフォルダ名を指定します。
ここでは、「AudioCaptchaWeb」という名前を入力します。
- Webサイトを作成する任意のフォルダ名を指定します。
ここでは、「AudioCaptchaWeb」という名前を入力します。
- [開く] をクリックします。
- [OK] をクリックします。
Webサービス参照の指定
- ソリューション エクスプローラで、Web サイトの名前を右クリックし、[Web 参照の追加] をクリックします。
- [Web 参照の追加] ダイアログ ボックスが表示されます。
- [URL] ボックスに次の Web サービスの URL を入力し、[移動] をクリックします。
http://aquest.dyndns.org/CaptchaAudioWS/CaptchaAudio.asmx
- Web サービスが見つかると、この Web サービスに関する情報が [Web 参照の追加] ダイアログ ボックスに表示されます。
- [Web参照名]に 「TestWebService」と入力します
クリックで拡大
- [参照の追加] をクリックします。
このフォルダの中に、Web サービスを参照する CaptchaAudio.wsdl ファイルが追加されます。
また、Web サービスが配置されている場所に関する情報が記述されている 検索ファイル (CaptchaAudio.disco および CaptchaAudio.discomap) などのサポート ファイルも追加されます。
コントロールとイベントハンドラの追加
- Default.aspxのデザインビューに切り替えて、
次のように、ツールボックスの[標準]からTextBox、Buttonを貼り付けます
Default.aspxのデザインビューに切り替えて、下図のように、ツールボックスの[標準]からTextBox、Buttonを貼り付けます
クリックで拡大
- 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);
}
}
テスト実行
- Ctrl キーを押しながら F5 キーを押してページを実行します。
- テキスト ボックスに「1234ABC」などの英数字を入力し、[Button] をクリックします。
英数以外の文字列を与えた場合は、getCaptcha()がNULLを返すため、音は鳴りません。