EXPath HTTP Client を使用して Web サービスを扱う

EXPath による HTTP テスト

さまざまな XML 技術に共通の拡張機能を定義する EXPath は、明確に定義された関数ライブラリーを使用して簡単に移植可能なアプリケーションを作成できるようにすることを目標とした、コミュニティーの主導による取り組みです。この取り組みによって定義された EXPath HTTP Client モジュールは、HTTP および HTTPS リクエストの送信を可能にする関数一式を定義しています。この記事では、この EXPath のライブラリーを使用して XSLT と XQuery の両方から HTTP の処理を行う方法について説明します。さらに、XQuery と EXPath HTTP Client モジュールを使用して作成した基本的な HTTP テスターで HTTP リクエストをテストする方法についても説明します。

James R. Fuller, Technical Director, Webcomposite s.r.o.

Photo of Jim FullerJames Fuller はプロとして 15 年以上の経験を持つ開発者で、自国のアメリカ、そしてイギリスの両方で数々の一流ソフトウェア会社と協力しています。技術関連の本を共同で執筆した経験があり、XML 技術をテーマとした講演、記事の執筆活動は定期的に行っています。彼は、XML Prague 設立時の委員会メンバーで、EXSLT の責任者の 1 人でもありました。彼はほとんどの時間、XML データベースと XQuery をいじって過ごしています。



2011年 7月 08日

EXPath の仕様一式は、さまざまな XML 技術で共通する機能の使用方法を統一しようとする試みを仕様にしたものです。誰もが貢献できる EXPath は、正式な標準化団体が定義する XML 標準をもっと有効に使えるようにするために、極めて短期間で XML 標準に対する有用で標準的な利用手段を定義する取り組みを表しています。

よく使われる頭文字語

  • HTTP: HyperText Transfer Protocol
  • HTTPS: HTTP over Secure Sockets Layer
  • MIME: Multipurpose Internet Mail Extension
  • REST: Representational State Transfer
  • SOAP: Simple Object Access Protocol
  • SQL: Structured Query Language
  • URI: Uniform Resource Identifier
  • URL: Uniform Resource Locator
  • XML: Extensible Markup Language
  • XSLT: Extensible Stylesheet Language Transformation

XML の第一人者である Florent Georges 氏が保守管理する EXPath は、すべての XML 技術のなかでも特に XPath が、XML 技術スタックを支える大きな力となっているという前提の上に立っています。つまり、XPath を強化および拡張する仕様を規定することで、XPath データ・モデルのコンテキスト内で設定された一貫性のある厳格な方法で、新しい機能を統合することが可能になるという考えに基づいています。

EXPath は何よりもまず、機能仕様を定義しようという試みです。定義された機能仕様に基づいて実装を作成するという部分は、コミュニティーに一任されます。

これらの EXPath モジュールの最終バージョンに期待する機能についての議論に参加し、意見を出して貢献するには、今が絶好の時期です。Web サイトおよび関連するメーリング・リストへのリンクについては、「参考文献」を参照してください。

EXPath HTTP Client モジュール

HTTP リクエストを作成、送信するための関数として、EXPath HTTP Client モジュールで定義されているのは、http:send-request() だけです。この関数の接頭辞 http は http://expath.org/ns/http-client 名前空間 URI にバインドされ、エラー要素を定義する接頭辞 err は、http://expath.org/ns/error 名前空間 URI にバインドされます。

http:send-request 関数は、任意の HTTP 動詞を使って HTTP リクエストを生成するために使用されます。つまり、この関数では HTTP GETHTTP POSTHTTP PUTHTTP DELETE のどれでも使用することができます。この関数が呼び出されると、HTTP 接続に関連付けられたすべてのメタデータと併せて、HTTP リクエストが指定のサーバーに送信され、HTTP レスポンスを発行します。

http:send-request ではさまざまなシグニチャーを使用できますが、私の好みのシグニチャーは以下に示すとおりです。このシグニチャーでは、実行する HTTP リクエストを表す http:element を渡します。

http:send-request($request as element(http:request))

EXPath モジュール

多くの EXPath モジュールの仕様にはすでに、かなり安定した実装が登場しています。最も活発に開発が進められているモジュールとしては、以下のものが挙げられます。

  • HTTP Client: このモジュールは、HTTP リクエストを送信し、レスポンスを処理するために使用する関数一式を定義しています。
  • Zip: このモジュールは、ZIP ファイルの構造を読み取る関数、ZIP ファイルからエントリーを読み取る関数、既存の ZIP ファイルのエントリーを更新する関数、新規 ZIP ファイルを作成する関数を提供します。
  • File Handling: このモジュールは、ファイルシステム情報の読み取りおよび変更に使用する関数一式を定義します。このモジュールを使用すれば、ファイルの読み取り、ディレクトリーの一覧表示、ディレクトリーの作成、そしてファイルに関する情報の取得などを実行することができます。
  • Packaging: XSLT、XQuery、XProc、XML Schema をはじめとする XML のコア技術の標準パッケージング・システムです。サポートされるあらゆるプロセッサーに、これらの技術をパッケージ化したライブラリーをデプロイすることができます。
  • Webapp コンテナー: 複数の XML コア技術に対応する標準 Web アプリケーション・コンテナーおよびフレームワークです。

HTTP リクエスト

http:request 要素は、リクエストの本体を包含するラッパーです。この要素の中に、HTTP リクエストを送信するために必要な以下の属性が組み込まれます。

  • method: HTTP の getpostputdelete、またはその他の HTTP 動詞のいずれか。
  • href: リクエストの送信先 URI。
  • status-only: レスポンスの内容 (true の場合、ステータス・コードとヘッダーのみが返されます)。
  • auth-method: セキュアな URL にアクセスする場合に使用する認証方式として、基本認証 (Basic) またはダイジェスト認証 (Digest) を定義します。
  • send-authorization: auth-method を使用する場合は、true に設定する必要があります。
  • username: 認証に使用するユーザー名。
  • password: 認証に使用するパスワード。
  • override-media-type: サーバーから返される Content-Type ヘッダーを上書きします。
  • follow-redirect: HTTP リダイレクトに自動的に従うかどうかを制御します。
  • timeout: サーバーからのレスポンスを待機する最大秒数。

リスト 1 に、http:request 要素を構成する方法と、この要素にオプションで含められる他の要素の例として、http:header 要素と http:body (マルチパートの場合は http:multipart) 要素を示します。http:body は、データをサーバーに送信 (POST または PUT) するために使用する要素です。単に HTTP GET を送信するだけの場合には、http:body 要素を省略します。

リスト 1. http:request 要素
<http:request
     method = ncname 
     href? = uri 
     status-only? = boolean 
     username? = string 
     password? = string 
     auth-method? = string 
     send-authorization? = boolean 
     override-media-type? = string 
     follow-redirect? = boolean 
     timeout? = integer> 
     (http:header*,
     (http:multipart| http:body)?) 
</http:request>

http:header 要素は、リクエストと併せて送信するカスタム HTTP ヘッダーを定義するために使用します。例えば、HTTP リクエストをユーザー・エージェントに関連付けるには、以下のように <http:header name="User-Agent" value="My HTTP Tester/1.0"/> の形で定義することができます。

<http:header name = string value = string/>

http:request 要素には、リスト 2 に示すように http:body 要素を含めることができます。これは、サーバーに送信したいコンテンツを含めるための要素です。例えば HTTP POST を送信するには、この要素の中に name=value ペアを含めます。

リスト 2. http:body 要素
<http:body
     media-type = string 
     src? = uri 
     method? = "xml" | "html" | "xhtml" | "text" | "binary" | qname-but-not-ncname 
     byte-order-mark? = "yes" | "no"
     cdata-section-elements? = qnames 
     doctype-public? = string 
     doctype-system? = string
     encoding? = string 
     escape-uri-attributes? = "yes" | "no" indent? = "yes" | "no"
     normalization-form? = "NFC" | "NFD" | "NFKC" | "NFKD" | "fully-normalized" 
        | "none" | nmtoken 
     omit-xml-declaration? = "yes" | "no" 
     standalone? = "yes" | "no" | "omit"
     suppress-indentation? = qnames 
     undeclare-prefixes? = "yes" | "no" 
     output-version? = nmtoken> any* 
</http:body>

HTTP POST または PUT で使用する http:body 要素は、HTTP をどのように処理して送信するかを定義する以下の属性を指定します。

  • media-type: 本体部分の MIME メディア・タイプ。
  • src: 本体の内容をインラインにではなく、別の URI として指定することができます。
  • method: 本体のフォーマット (xmlhtmlxhtmltextbinary)。
  • cdata-section-elements: CDATA セクションとしてエンコードする要素を指定します。
  • doctype-public: 本体の公開文書型を定義します。
  • doctype-system: 本体のシステム文書型を定義します。
  • encoding: 本体の文字エンコード方式。
  • Indent: 本体を送信する前に、自動インデントを適用するかどうかを指定します。
  • omit-xml-declaration: 本体の XML 宣言を除外するかどうかを指定します。
  • suppress-indentation: indent 属性が “yes” に設定されている場合に、インデントしない要素を指定します。

EXPath HTTP 仕様を読むと、これ以外の属性もあることがわかりますが、これらの属性の一部はまだ開発中であることに注意してください。そのため、ここでは明確に定義されている属性だけを記載しています。

これまでに記載したコードに示したコンポーネントを使えば、完全な HTTP リクエストを構成することができますが、HTTP プロトコルも HTTP リクエストでファイルを送信する機能を提供しています。一般に、HTTP はマルチパート・メッセージ本体を他のメディア・タイプとまったく同じように扱います (リスト 3 を参照)。つまり、あくまでもペイロード (単独の HTTP リクエスト) として扱うということです。EXPath HTTP を定義するための要素は、http:multipart です。

リスト 3. http:multipart 要素
<http:multipart media-type = string
     boundary? = string>
     (http:header*,
     http:body)+
     </http:multipart>

この要素は単独の HTTP リクエスト (サブリクエスト) を定義することから、media-type を使用して、このリクエストのメディア・タイプを定義します。boundary 属性が定義する境界マーカーが、ネストされた http:body 内に含まれるマルチパート・メッセージの各部分を分離するために使用されます。

HTTP レスポンス

http:send-request() 関数が呼び出された後、この関数は http:response 要素に続けて HTTP レスポンスの本体に含まれる項目のシーケンスを返します (リスト 4 を参照)。

Listing 4. http:response 要素の例
<http:response 
status = integer 
message = string> 
(http:header*)
</http:response> 

.... HTTP Response body ....

status は、サーバーから返された HTTP RESPONSE STATUS コード (200 など) を示す属性です。この属性の他、http:response 要素にはサーバーから返された HTTP レスポンス・ヘッダー、マルチパート、および本体が含まれます。


実際の使用方法

EXPath の取り組みは仕様の定義を主な焦点としているため、必ずしも EXPath モジュール機能の実装を提供するわけではありません。しかし幸いなことに EXPath HTTP Client モジュール・ページには、今すぐ使える以下の EXPath HTTP Client のリファレンス実装が用意されています。

  • Saxon: EXPath パッケージ (.xar) としてインストールされます。
  • eXist: EXPath パッケージとしてインストールされるか、XQuery ライブラリーを直接使用します。
  • Zorba: Zorba XQuery プロセッサーに組み込まれた実装です。
  • MarkLogic Server: XQuery ライブラリーとして使用されます。
  • Microsoft .NET Framework: myxsl.net ASP.net 拡張機能によって提供されます。

EXPath の仕様は今でも進化しているため、実装についても変更される可能性があります。本番環境で使用する前に、これらのモジュールの基本動作を必ずチェックしてください。

XSLT の例

EXPath HTTP Client モジュールについて学んだ知識を実践に移すために、XSLT 変換コードのなかから HTTP リクエストを呼び出します。この例では、Michael Kay 氏による SAXON XSLT and XQuery プロセッサー (Saxon バージョン 9.2) を XSLT プロセッサーとして使用します。

EXPath HTTP Client 実装をインストールするには、このモジュールとは別の EXPath Packaging System という EXPath モジュールを使用する必要があります。EXPath Packaging System は EXPath HTTP Client モジュールを自動的にインストールしてくれる便利なモジュールです。EXPath HTTP Client モジュールをインストールするには以下の手順に従います。

  1. SAXON 対応の EXPath Packaging モジュールをダウンロードします。
  2. SAXON 対応の EXPath HTTP Client モジュールをダウンロードします。
  3. EXPath Packaging モジュールをインストールします (README ファイルの手順に従ってください)。
  4. EXPath Packaging モジュールを使用して、EXPath HTTP Client XAR パッケージをデプロイします。

SAXON プロセッサーが新しい機能にアクセスできるようにするには、EXPath HTTP Client 名前空間を定義して、http:send-request 関数を呼び出します (リスト 5 を参照)。

リスト 5. XSLT で呼び出す HTTP GET の例
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:http="http://expath.org/ns/http-client" version="2.0"> <xsl:template
name="main"> <xsl:variable name="req" as="element()"> <http:request
     href="http://neo.jpl.nasa.gov/risk/" method="get"/>
</xsl:variable> <xsl:copy-of
select="http:send-request($req)[2]"/> </xsl:template>
</xsl:stylesheet>

上記のコードは、HTTP GET リクエストを URL http://neo.jpl.nasa.gov/risk/ へ送信します。ちなみにこの URL は、地球の近くを周回する小惑星が地球に衝突するリスクを評価するのを専門とする Web サイトの URL です。この HTTP GET リクエストの内容は、ブラウザーから Web ページをリクエストする場合の内容に相当します。href 属性は、有効な (そしてアクセス可能な) 任意の Web URL に変更しても構いません。

関数から返される http:response 要素には HTTP レスポンスの要素が含まれ、その HTTP レスポンスに含まれる http:header 要素の後に、実際にリクエストされた Web ページのコンテンツが続きます。リスト 6 にマークアップを記載します。

リスト 6. http://neo.jpl.nasa.gov/risk/ からの HTTP レスポンス
<http:response
xmlns:http="http://expath.org/ns/http-client" 
status="200"> 
<http:header name="Date" value="Sun, 14 Nov 2010 10:37:34 GMT"/> 
<http:header name="Server" value="Apache"/> <http:header 
          name="Accept-Ranges" value="bytes"/> 
<http:header name="Transfer-Encoding" value="chunked"/>
<http:header name="Content-Type" value="text/html"/> 
<http:body media-type="text/html"/> 
</http:response> 
... actual web page ....

ここでは、返される実際の Web ページに関心があるので、以下のように http:send-request 関数では述部を使用して、返されるシーケンスから 2 番目の項目を選択しています。

http:send-request($req)[2]

XQuery の例

記事のサンプル・ダウンロードにバンドルされている EXPath HTTP Client の xquery ライブラリー実装 (http-client.xqm) を参照して、eXist XML データベース内から関数を呼び出してください。

リスト 7 のコードは、XQuery ファイルとしてロードされる eXist XML データベースのインスタンスで実行する必要がありますが、データベースをインストールできないとしても心配はご無用です。後で、Zorba XQuery プロセッサーを使用した「インストール不要」の方法を説明します。

リスト 7. XQuery の例
import module namespace http = "http://expath.org/ns/http-client" at "http-client.xqm"; 
let $url:= 'http://neo.jpl.nasa.gov/risk/' 
let $req := <http:request href="{$url}" method="get"/> 
return 
     http:send-request($req)[1]

開発者にとっては XQuery ライブラリーをインポートするほうがより馴染みがある方法なので (EXPath パッケージングのほうが新しい標準です)、記事の大半の例ではその方法を使用します。

XSLT の例でのように Web ページを返す代わりに、ここではシーケンスの最初の項目である http:response 要素だけを返すことにします。この要素をリスト 8 に記載します。

リスト 8. http:response 要素
<http:response xmlns:http="http://expath.org/ns/http-client" status="200"> 
     <http:header name="Date" value="Sun, 14 Nov 2010 10:37:34 GMT"/> 
     <http:header name="Server" value="Apache"/> 
     <http:header name="Accept-Ranges" value="bytes"/> 
     <http:header name="Transfer-Encoding" value="chunked"/>
     <http:header name="Content-Type" value="text/html"/> 
     <http:body media-type="text/html"/> 
</http:response>

今度は、これと同じ例を Zorba XQuery プロセッサーで実行してみてください。それには、Zorba XQuery プロセッサーのオンライン・ライブ・デモを使用するだけであり、何もインストールする必要はありません。ブラウザーで http://try.zorba-xquery.com にアクセスし、表示された Web ページの該当するエリアにリスト 9 のコードを貼り付けてください。

リスト 9. Zorba の例
import module namespace http = "http://expath.org/ns/http-client"; 
let $url := 'http://neo.jpl.nasa.gov/risk/'
let $req := <http:request href="{$url}" method="get"/>
return 
     http:send-request($req)[1]

EXPath HTTP Client は Zorba に組み込まれているため、上記のコードで変更する必要があるのは唯一、import module 宣言だけです。図 1 に、ブラウザーでのこの作業の様子を示します。

図 1. EXPath HTTP Client の例を Zorba で実行する場合
Zorba ライブ・デモでの EXPath HTTP Client の例を示すスクリーン・キャプチャー

クリックして大きなイメージを見る

図 1. EXPath HTTP Client の例を Zorba で実行する場合

Zorba ライブ・デモでの EXPath HTTP Client の例を示すスクリーン・キャプチャー

Execute (実行)」をクリックすると、ページに貼り付けたスクリプトがオンラインの Zorba XQuery プロセッサーで実行されます。その結果として返される http:response は、eXist XML データベースの例と同じです。

プロセッサー間でのこの一貫性は、あの恐ろしい「ベンダー・ロックイン」を防ぐだけではありません。この一貫性は、新たな関数のシグニチャーを学ぶ時間を省くことができ、その分の時間を、優れた Web アプリケーションの構築に費やせるようになることも意味します。


HTTP テスター

EXPath HTTP Client モジュールの基本を理解したところで、このモジュールを使用して、HTTP リクエストの送信テストに使える Web ベースの汎用 HTTP テスターを作成してください。私は HTTP テスターを作成するに際して、15 分間のプログラミングでどこまでのものを作成できるのか挑戦してみました。出来上がったテスターの設計は何の賞にも値しませんが、基本的な HTTP テスターを簡単かつ素早く作成できることに驚かされました。実装の詳細について掘り下げることはしませんが、あえて言うなら、このテスターには改善の余地が大いにあるものの、皆さんが独自に調査する出発点として役立つはずです。

ご想像のとおり、テスターの中核は http:send-request 関数にあります。この関数以外は、http:request 要素を組み立てられるようにするためのものです。テスターをインストールするには、以下のファイルを eXist XML データベースにアップロードしてください。

  • expath-http.xqm: eXist XML データベースの EXPath HTTP Client XQuery ライブラリー
  • index.xqy: 単純な HTTP テスター

この HTTP テスターは、eXist XML データベース内で使用されるように作成されているので、テスターをインストールするには eXist XML データベースにアップロードします。HTTP テスターにアクセスするには、eXist XML データベースの RESTful なインターフェースを使用して、ブラウザーから以下の index.xqy にアクセスします。

http://localhost:8080/exist/rest/db/expath-http/index.xqy

問題がなければ、図 2 のようなページが表示されます。

図 2. HTTP テスター
HTTP リクエストと HTTP レスポンスの両方を表示する HTTP テスターのスクリーン・キャプチャー

クリックして大きなイメージを見る

図 2. HTTP テスター

HTTP リクエストと HTTP レスポンスの両方を表示する HTTP テスターのスクリーン・キャプチャー

Web サービスをテストする

これで、汎用テスターは用意できたので、重要な HTTP 動詞のすべてを試してみて、任意の Web サービスに対して送信するヘッダーとコンテンツを定義してください。以下に、いくつかのサービスを例に、URL メソッドと想定される http:request および http:response 要素を要約します。

  • MarkMail: このサービスは、人気の高いメーリング・リストのアーカイブに対して検索を行う便利なインターフェースを提供しています。MarkMail で公開している多種多様なフィードのうち、ユーザーがアクセスできるフィードの 1 つは、アーカイブに一番最近追加されたメーリング・リストを表します。Atom は上手く実装された RESTful な Web サービスの好例なので、以下に一例として、EXPath HTTP Client では Atom を簡単に操作できることを示します (リスト 10 を参照)。
    リスト 10. MarkMail
    Method: HTTP GET 
    URL: http://markmail.markmail.org/atom/ 
    
    <http:request xmlns:http="http://expath.org/ns/http-client" method="get" 
    href="http://markmail.markmail.org/atom/" 
    username="" password="" auth-method="" 
    send-authorization="false" 
    follow-redirect="true" timeout="30"/>
    
    <http:response xmlns:http="http://expath.org/ns/http-client" status="200">
    <http:header name="Content-Type" value="application/atom+xml"/>
    <http:header name="Date" value="Sun, 14 Nov 2010 12:00:52"/>
    <http:header name="Expires" value="Sun, 14 Nov 2010 12:57:52"/>
    <http:header name="Cache-Control" value="public"/>
    <http:header name="Server" value="MarkLogic"/>
    <http:header name="Content-Length" value="209931"/>
    <http:header name="X-Cache" value="MISS from cache-2.a.markmail.biz"/>
    <http:header name="Via" value="1.0 cache-2.a.markmail.biz:80 (squid)"/>
    <http:header name="Connection" value="close"/>
    <http:body content-type="application/atom+xml"/>
    </http:response>
  • Yahoo! YQL: Yahoo! は、Yahoo! でホストされるあらゆる類のデータに対してクエリーを実行できる、SQL のような SELECT 構文、YQL (Yahoo! Query Language) を提供しています。YQL を使用することで、さまざまな Web サービスのデータに対してクエリーやフィルタリングを行うことができたり、データ同士を結合したりすることができます。このデータには、EXPath を使って直接アクセスすることができます (リスト 11 を参照)。
    リスト 11. Yahoo! YQL
    Method: HTTP GET 
    URL: http://query.yahooapis.com/v1/public/yql?q=select * from 
      weather.forecast where location=90210&diagnostics=true
    
    <http:request xmlns:http="http://expath.org/ns/http-client" method="get" 
         href="http://query.yahooapis.com/v1/public/yql?
               q=select%20*%20from%20weather.
               forecast%20where%20location%3D90210&diagnostics=true" 
         username="" password="" auth-method="" send-authorization="false" 
         follow-redirect="true" timeout="30"/>
    
    <http:response xmlns:http="http://expath.org/ns/http-client" status="200">
         <http:header name="Date" value="Sun, 14 Nov 2010 13:45:51 GMT"/>
         <http:header name="P3P" value="policyref="http://info.yahoo.com/w3c/p3p.xml", 
             CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi 
             OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT 
             DEM CNT STA POL HEA PRE LOC GOV""/>
         <http:header name="Access-Control-Allow-Origin" value="*"/>
         <http:header name="Cache-Control" value="public, max-age=1199"/>
         <http:header name="Vary" value="Accept-Encoding"/>
         <http:header name="Content-Type" value="text/xml;charset=utf-8"/>
         <http:header name="Age" value="0"/>
         <http:header name="Transfer-Encoding" value="chunked"/>
         <http:header name="Connection" value="keep-alive"/>
         <http:header name="Server" value="YTS/1.19.4"/>
         <http:body content-type="text/xml;charset=utf-8"/>
    </http:response>
  • London gold price: このサービスは、現在の金価格を調べるための SOAP インターフェースを提供します。SOAP を扱うということは、通常は特定の HTTP ヘッダー (SOAPaction など) を追加しなければならないことを意味しますが、EXPath HTTP Client モジュールを使用すれば、簡単に SOAP を扱うことができます。リスト 12 を見てください。
    リスト 12. London gold price
    Method: HTTP POST 
    URL: http://www.webservicex.net/LondonGoldFix.asmx
    HEADER:  SOAPAction = http://www.webservicex.net/GetLondonGoldAndSilverFix
    BODY: <soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
       xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soap:Body>
    <GetLondonGoldAndSilverFix xmlns="http://www.webservicex.net"/>
    </soap:Body>
    </soap:Envelope>
    
    <http:request xmlns:http="http://expath.org/ns/http-client" 
      method="post" href="http://www.webservicex.net/LondonGoldFix.asmx" 
    username="" password="" auth-method="" send-authorization="false" 
      follow-redirect="true" timeout="30">
    <http:header name="SOAPAction" 
      value="http://www.webservicex.net/GetLondonGoldAndSilverFix"/>
    <http:body content-type="text/xml">
    <soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soap:Body>
    <GetLondonGoldAndSilverFix xmlns="http://www.webservicex.net"/>
    </soap:Body>
    </soap:Envelope>
    </http:body>
    </http:request>

まとめ

この入門記事では、EXPath HTTP Client で実行できる基本的な内容を明らかにすることに重点を置きました。そのため、HTTP プロトコルに潜む、あまり知られていない詳細を探求することはしませんでしたが、その複雑さは、http:request 要素と http:body 要素で使用できるオプション属性の数から想像できるはずです。ただし、一般的にこれらの属性が使われることは稀です。

XQuery および XPath プロセッサーの多くでは、HTTP リクエストを行うために固有の拡張機能を使用しています。これらのプロセッサー間でのコードの移植は、EXPath HTTP Client モジュールによって容易になります。

EXPath の取り組みはまだ初期の段階です。けれども、EXPath HTTP Client モジュールのようなモジュールの存在によって、その明るい未来はすでに約束されています。これらのモジュールを試しに使ってみてください。そしてメーリング・リストに登録して、討論に参加することをお勧めします。


ダウンロード

内容ファイル名サイズ
Example download filesrc.zip7KB

参考文献

学ぶために

製品や技術を入手するために

議論するために

コメント

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, SOA and web services
ArticleID=696868
ArticleTitle=EXPath HTTP Client を使用して Web サービスを扱う
publish-date=07082011