Creator2でGoogle WebServiceを実装する
さて、本日は予定を変更してGoogleの検索WebServiceをCreator2で実装します。
作成するWebアプリケーションは、テキストフィールドに入力された検索キーワードを元に
Googleに問い合わせ、検索結果を表示するアプリケーションです。
作成イメージ
まず、実際にGoogleのWebServiceを利用する前に、Google Web APIについて、
簡単に御紹介します。
Google Web APIを使用するとWebアプリケーションの開発者は
自身のサイト上で直接Googleに問い合わせ、世界中のWebサイトを検索できるようになります。
GoogleはSOAPとWSDLを使用しているため、JavaやPerl等を使用して利用が可能です。
Googleが提供しているサービスとして以下があります。
- 検索
- キャッシュの取得
- スペルチェック
Google Web APIに関する詳細は下記を御参照ください。
Google Web APIs (beta)
次に、実際にアプリケーションを構築する前に、事前に準備していただく事が
一つだけあります。
それは、Google上でアカウントを作成していただく事です。
アカウントを取得後、「ライセンスキー」を取得してください。
ライセンスキーを使用すると1ライセンスキー辺り、1日に1000回まで検索することが
可能です。
ライセンスキーを取得するまでの大まかな流れは下記となりますので、
下記に従いライセンスキーを入手してください。
- Googleへの登録
- Googleからメールを受信
- 受信したメールに記述されているURLにアクセス
- ライセンスキーが記述されたメールを受信
ライセンスキーのサンプルを下記に示します(最後10桁は変更してます)。
kZ7RVhlQFHKFUh/ZN8h7epABCDEFGHIJ
問題なく、ライセンスキーは入手できましたか?
それでは、実際にGoogleの検索Webアプリケーションを作成していきましょう。
まず、今までと同様新規プロジェクトを作成してください。
プロジェクト名として「GoogleSearch」を指定してください。
次に、画面上に表示するコンポーネントをドラッグ&ドロップにて貼り付けてください。
ここでは、検索キーを入力するテキストフィールド「TextField」と、実行ボタン
「Button」、検索結果を表示するテーブル「Table」を貼り付けて下さい。
次に、検索結果を表示する表(テーブル)に対して、データプロバイダを指定します。
ここでは、デフォルトのデータプロバイダに変え、「Object Array Data Provider」を
指定します。
「Palette」タブより「Data Providers」を選択し「Object Array Data Provier」
を表示してください。このプロバイダを画面デザイン上の「Table」へドラッグ&ドロップ
します。
これにより、自動的に「Page1.java」に下記のコードが追加されます。
private ObjectArrayDataProvider objectArrayDataProvider1 = new ObjectArrayDataProvider();
public ObjectArrayDataProvider getObjectArrayDataProvider1() {
return objectArrayDataProvider1;
}
public void setObjectArrayDataProvider1(ObjectArrayDataProvider oadp) {
this.objectArrayDataProvider1 = oadp;
}
次に、WebServiceをプロジェクト上に配置します。
「Servers」タブより、「Web Services」→「Samples」→「GoogleSearch」を
選択してください。そして「GoogleSearch」を画面デザイン上にドラッグ&ドロップ
します。
すると、「Outline」タブ上に「googleSearchClient1」というプロパティが表示されている
事が確認できます。
(本来は上のデータプロバイダの指定の前にこの項目をやったほうがいいのですが、、)
次に、プロパティを追加します。追加するプロパティはGoogleからの検索結果を
格納する為の配列となります。
追加方法は、「Projects」タブの「Page1.java」ファイルを選択し、
マウス右クリックしてください。すると「Property」が表示されますので、
これを選択実行します。
「Property」を選択すると下記の画面が表示されます。
それぞれの項目に値を入力し、「OK」ボタンを押下してください。
プロパティの追加により、「Page1.java」に下記のコードが追加されます。
private webservice.googlesearchservice.ResultElement[] resultElement;
public webservice.googlesearchservice.ResultElement[] getResultElement() {
return this.resultElement;
}
public void setResultElement(webservice.googlesearchservice.ResultElement[] resultElement) {
this.resultElement = resultElement;
}
次に、先ほど作成した「Object Array Data Provider」と「resultElement」を対応させます。
まず、「Outline」タブより「objectArrayDataProvider1」を選択しプロパティ設定画面を
確認します。ここで「array」の要素のコンボボックスを押下すると、「resultElement」が
追加されていることが確認できますので、これを選択します。
これで、「Object Array Data Provider」と「resultElement」の対応付けが完了です。
それでは画面デザインに戻ってください。Tableのデータは今までの操作で
「resultElement」の値を対応付けさせました。
そこで「resultElement」の構成要素から表示項目を選択します。
表示項目の選択は、「Table」よりマウス右クリックにて「Table Layout」を選択します。
次に、項目中よりタイトル(title)・要約(snippet)・URLを選択します。
以上で表示項目の選択は完了です。
以上が終了すると画面デザインは下記のように変更されていることが
確認できます。
最後に、ボタン押下時の処理を記述してください。
画面デザインで、ボタンをダブルクリックしてJavaソースエディタを開いてください。
そして下記のコードを記述してください。
#下記では便宜上、例外処理等、詳細な実装は抜いています。
public String button1_action() {
String searchString = (String)textField1.getText();
try{
GoogleSearchClient sclient = getGoogleSearchClient1();
GoogleSearchResult result = sclient.doGoogleSearch(“kZ7RVhlQFHKFUh/ZN8h7epABCDEFGHIJ”, //Googleライセンスキー
searchString, //検索キーワード
0,
10, //検索結果の最大件数
false,
“lang_ja”,
false,
null,
null,
null);
resultElement = result.getResultElements();
objectArrayDataProvider1.setArray(resultElement);
}catch(Exception e){
return “error”;
}
return null;
}
上記のコードを実装後、ビルド・デプロイして実行してください。
Google検索Webアプリケーションの実行結果、下記の画面が表示されます。
補足:
「Servers」タブで「GoogleSearch」を選択した際に、処理可能な内容(メソッド)が表示されますが、
Creator2上から簡単にテストできます。
「GoogleSearch」より「doGoogleSearch」を選択してください。
ここで、マウス右クリックにて「Test Method」という項目が表示されます。
これを選択してください。
「Test Method」にて表示される画面にて必要項目を入力し「Submit」ボタンを押下します。
すると、「Results」欄に結果が表示されます。
以上で、Creator2を使用したWebサービスの使い方について説明しましたが、如何ですか?
とても簡単にWebサービスを利用できますよね!!
他にもWebサービスに関するサンプルが多くあるので、是非試してみてください。
また、今回は、とりあえずGoogleのWebServiceを使ってみるということが目的だったため、
WSDLの登録や表示項目についての詳細は取り上げませんでした。
(リンクを押下しても画面遷移されない等。)
この辺は、また後日説明します。
次回は、ナビゲーションか、バリデータどちらかを紹介する予定です。
Entry filed under: 未分類.