本文へジャンプ

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

送信されたすべての情報は安全です。

  • 閉じる [x]

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


送信されたすべての情報は安全です。

  • 閉じる [x]

シンプルSOAPクライアント

汎用Java SOAPクライアント

Bob DuCharme (bob@snee.com), Solutions Architect, UDICo
Photo of Bob DuCharme
Bob DuCharme は Innodata Isogen のソリューション・アーキテクトであり、XML が禁句であった頃には XML の「エキスパート」でした。彼は情報技術に関して 4 冊の本と100 本近くのオンライン記事や印刷記事を書いていますが、そのどれにも「機能性 (functionality)」という単語を使っていません。詳しくは http://www.snee.com/bob をご覧ください。

概要: この記事では、専用のSOAPライブラリーを使用しない、Javaによる簡単な汎用SOAPクライアントについて説明します。この簡単なSOAPクライアントでは、SOAP要求XML文書をシステムの内部で作成するのではなく、XMLエディター (またはテキスト・エディター)を使用して、要求を作成することが可能です。また、単にリモート・メソッドの戻り値を示すのではなく、このクライアントは、実際のSOAP応答のXML文書を示します。この短いJavaプログラムは、SOAPが行っていることを包み隠さずに教えてくれます。すなわち、HTTP接続を行い、リモート・メソッドを呼び出す適切なXMLを送信し、サーバーから返されるXML応答を読み込むというプロセスを見せてくれます。

日付:  2001年 5月 01日
レベル:  初級 この記事の原文:  英語
アクティビティー: 8952 ビュー
お気軽にご意見・ご感想をお寄せください: 


Simple Object Access Protocol (SOAP) は、ネットワーク上の情報交換として、IBM, Microsoft, DevelopMentor,およびUserLand Softwareが開発に携わっている発展途上のW3C標準です。ますます多くのSOAPサーバーがWeb上で公開されるようになるにつれて、SOAPがさまざまな言語のプログラム(Visual BasicやJavaScript、perlなどのシンプルで一般的な言語で書かれた短く小さいプログラムまで)に対して果たす役割は、Webブラウザーに対してHTMLが果たしたものと同様になってきています。これによって、拡大を続けるWeb上のさまざまな情報ソースを簡単に利用できるようになっています。

HTMLと同様、SOAPは、HTTP (SOAP 1.1からはSMTPも) によってWeb上で送信されるさまざまな情報のそれぞれの役割をタグによって示します。しかしSOAPは、HTMLよりもはるかに強力な機能を持っています。SOAPでは、ユーザーのプログラムがSOAPサーバーへの「SOAP要求」(リモート・マシンで呼び出すメソッドとそこに送られるパラメーターを記述した短いXML文書) を送信します。SOAPサーバーは、それらのパラメーターを用いてメソッドを実行し、SOAP応答 (実行結果またはエラー・メッセージ) をユーザーのプログラムに返します。公開使用されているSOAPサーバーは、株価、最新の為替レート、FedExの貨物追跡情報、代数式の解法など、情報を求めるあらゆるSOAPクライアントに対してさまざまな情報を提供します。

SOAPが開発される以前は、このような情報を利用するには、プログラムによってWebページを開き、HTMLを「検索」してテキストを探すという作業が必要でした。しかし、Webページに表示の変更 (たとえば、最新の株価を表の2番目の欄ではなく3番目の欄に入れる) があった場合には、そのプログラムは使用できなくなってしまいました。SOAP仕様 (および、それに伴うSOAP要求 / SOAP応答に関する概要) によって、クライアント / サーバー間ルールのフレームワークが確立され、きわめて強力な情報収集ツールの基盤が作られました。

SOAPクライアントは数多くあり、一般的なプログラミング言語のほとんどに対応しています。詳細なリストは、SOAP::Lite for PerlのページのSOAP Toolkitsセクションを参照してください (参考文献を参照)。ほとんどのSOAPクライアントは、プログラムから呼び出しの対象となるクラス・ライブラリー、COMオブジェクト、またそれに相当するものを提供しますが、それらのクライアント・ライブラリーは、通常、以下のように使用されます。

  1. 呼び出しの対象となるリモート・メソッド名および必要なパラメーターを、クライアントのプログラムが送信する。
  2. ライブラリーが、適切なSOAP要求のXML文書をアセンブルし、この情報をパッケージする。
  3. ライブラリーが、SOAPエンドポイントURLによって識別されたSOAPサーバーへこのXML文書を送信する (サーバーのURLを指定し、ブラウザーにWebサーバー・アドレスを指し示すのと同様)。
  4. SOAPサーバーはメソッドを実行し、その実行結果に関するSOAP応答のXML文書をアセンブルし、SOAPクライアントに返信する。
  5. SOAP応答を受け取ると、クライアント・ライブラリーは、XMLを構文解析してメソッド呼び出しの結果を取得し、ライブラリーを用いてこの結果をプログラムへ送信する。

SOAPClient4XG

SOAPの紹介 (developerWorksのGraham Glassの「Web Servicesの進化と革命」を参照) では、常に、SOAP要求 / SOAP応答に使用されるXML文書の構造について示されていますが、私が使用したSOAPクライアントでは、XMLアセンブリー / XML構文解析の管理がシステム内部で行われるため、私自身がそれを行う必要はありませんでした。しかし、XMLのおたくである私はXMLを自分で作成したいと思いました。そして、SOAPがそれほど簡単なものであるなら、SOAP要求のXML文書を読み込むためのシンプルなSOAPクライアントを記述し、コマンド・ラインで指定されたSOAPエンドポイントURLへそれを送信して、応答の文書を読み込み、その応答を出力することができる、と私は考えました。これによって、どのSOAPサーバーのどのメソッドでも呼び出しができるようになるため、これはまさに汎用のSOAPクライアントでしょう。

リスト1 で示されているSoapClient4XG (「SOAP Client for XML Geeks」) Javaクラスは、前にも述べたSOAP Toolkitsのページ (参考文献を参照) に記載されている特別なJava SOAPクラスを使用せずに、処理を実行します。SoapClient4XGは、SOAPエンドポイントURLおよびSOAPのXML文書のファイル名がパラメーターとして送信されたことを確認した後、ファイルに読み込んでそれをSOAPサーバーへ送信し、応答を読み込んで標準出力へ出力します。

このSOAPクライアントはHTTPプロトコルによってXML SOAP要求を送信するため、主に必要となるのはHTTPの設定です。Javaには、各HTTPパラメーターを適切に設定するための数多くのメソッド「セット」を持つHttpURLConnection クラスがあり、パラメーターのほとんどは簡単な文字列によって設定できます。Content-Length は追加コードを必要とするHTTPパラメーターであり、SoapClient4XGは、XML要求を読み込んでそれをバイト配列に入れ、バイト配列のlength プロパティーを確認して、XML要求の長さを割り出します(訳注:HttpURLConnectionクラスの実装は通常Content-Lengthを自動的に計算し、ヘッダに入れてくれます。少なくとも、SunやIBMの実装はそうなっています。従ってこの部分のコードは必要ないはずです。)。

また、その他の方法によるこのようなHTTPパラメーターの設定管理も可能です。Sunが提供するオープン・ソースのBrazil Webアプリケーション・フレームワーク (参考文献を参照) は、Javaアプレットによるイメージおよびその他のWebリソースの負荷軽減のために特別に書かれたものではない汎用のHTTPクラスであり (以前のHttpURLConnection クラスとは異なり)、HTTP問題の処理を自動化し、適切なSOAPエラー処理をより容易なものとします。

完全なSOAPクライアントは、リスト1を参照してください。


実行

Xmethods.com (参考文献を参照) では、拡大を続けるSOAPサービスのリストが公開されています。その多くには、SOAP Actionパラメーターを必要とするかどうかの情報と共に、XML要求のサンプルが記載されており、私は気温情報のSOAPサーバーのサンプル要求をコピーし、若干空白を追加してそのzipcode エレメントを私独自のzipコードに置き換えました。これは、リスト2 に示されています。

weattherreq.xml として保存されたこのファイルによって、リスト3 のコマンド・ラインは、私がXMLサンプルを見つけたXMethods Webページで指定されているSOAPエンドポイントURLへその内容を送信します。

リスト4 に示されているように、SOAPサーバーは、response エレメントに保存されている現在の気温情報を持ったSOAP応答を返信します。

このSOAPクライアントでは、システムの内部でXML文書が作成されるのではなく、自分自身で作成したXML文書によってSOAP要求をSOAPクライアントへ送信でき、XMLエディターやテキスト・エディターによってXML文書を直接編集することができます。さらに重要なことは、拡大を続けるSOAPサービスをこのSOAPクライアントによってより簡単に利用することができるようになるという点です。その方法は簡単です。利用するサービスのSOAPエンドポイントURLに名前を付け、HTTPパラメーターを設定し、呼び出しメソッドとそれらを送信するためのパラメーターを示すXMLを送信して、あとは応答を待つだけです。

ぜひ、使いたいプログラミング言語のSOAPライブラリーを調べてみてください。エラー処理や堅固なアプリケーション開発のための基盤という点では、通常、私のSOAPクライアントよりもSOAPライブラリーの方が優れた機能を提供しています。しかし、最終的にはシンプルさがものを言うこと、そしてこの簡単なプロトコルがきわめて大きな力を持っていることも忘れないでください。

(HTTPに関して、Michael Brennan氏の助力に特別な感謝の意を表します。)


参考文献

著者について

Photo of Bob DuCharme

Bob DuCharme は Innodata Isogen のソリューション・アーキテクトであり、XML が禁句であった頃には XML の「エキスパート」でした。彼は情報技術に関して 4 冊の本と100 本近くのオンライン記事や印刷記事を書いていますが、そのどれにも「機能性 (functionality)」という単語を使っていません。詳しくは http://www.snee.com/bob をご覧ください。

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


developerWorks: サイン・イン


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。 プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。 お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

表示名をお選びください

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

(半角英数字で3文字以上31文字以下にする必要があります)


「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


この記事を評価する

コメント

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=XML
ArticleID=241332
ArticleTitle=シンプルSOAPクライアント
publish-date=05012001
author1-email=bob@snee.com
author1-email-cc=

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。