Web サービスを使用して PHP5 で J2EE アプリケーションにアクセスする (2)
j2ee|php5|web|webサービス|プログラム|アクセス
PHP Weather Client
このセクションでは独自の PHP Weather クライアントを構築します。いくつかのコード スニペットがここに提供されています。完全なクライアント ファイルと WSDL ファイルをダウンロードすることをお勧めします。
Weather Serviceを表すために使用されるext/soapクラスはSoapClientです。 Weather Forecast アプリケーションを導入したときに説明したように、アプリケーション サーバーが http://host:port/ItsoWebServer2RouterWeb/wsdl/itso/session/WeatherForecastEJB.wsdl で WSDL を提供していることがわかっています。デフォルトのポートを使用し、サーバーであるマシンで作業しているため、WSDL ファイルを探して最初の SoapClient を作成できます:
<?php
$soapClient = new SoapClient("http://localhost:9080 / " .
"ItsoWebService2RouterWeb/wsdl/itso/session/WeatherForecastEJB.wsdl");
?>
ext/soap が組み込まれているため、SoapClient を参照する前に include ステートメントや require ステートメントは必要ないことに注意してください。
クライアントがインスタンス化されたので、Weather サービスに連絡し、その getForecast オペレーションを呼び出す必要があります。 SoapClient を WSDL モードで使用する場合、ext/soap には、SoapClient 自体の関数であるかのようにリモート操作を直接参照できるという優れた機能があります。ただし、入力パラメータを設定する際には少しコツが必要です。 ext/soap は、WSDL から検出された一連の操作とパラメーターを提供できます:
$functions = $soapClient->__getFunctions();
print_r($functions);
$types = $soapClient->__getTypes();
print_r ($types);
getForecast に関連する結果を表示し、読みやすいようにこれらの結果を再フォーマットするだけでよいため、次のコードが表示されます:
getForecastResponse getForecast(getForecast $parameters)
struct getForecast {
dateTime startDate ;
int days;
}
struct getForecastResponse {
Weather getForecastReturn;
}
struct Weather {
文字列条件;
dateTime 日付;
文字列風向;
int 風速;
int 温度摂氏;
ブール dbflag;
}
ext/ soap は実際には getForecast クラスを定義しません。この操作に必要な入力パラメーター配列を作成する必要があります:
$getForecastParam = array('startDate' => time(), 'days' => 3);
その後、呼び出します。 SoapClient メソッドのような操作:
$forecastResponse = $soapClient->getForecast($getForecastParam);
最後に、返された getForecastResponse オブジェクトを取得します。これ自体は Weather オブジェクトの配列であり、結果をテーブルに表示します。
echo "
日付 | Condition | Temperature | Wind$weatherArray = $forecastResponse->getForecastReturn; foreach ($weatherArray as $weather) { echo " |
---|---|---|---|
",strftime("%a. % b %d, %Y", strtotime($weather->date)),"</td>", " |
$weather->condition | ",$weather- >摂氏温度</td>", " |
$weather->windDirection $weather->windSpeed | ",
PHPクライアントと Java クライアントの出力は同じなので、クリスマスの間サンノゼでは雪が降らないことがわかります...
図 3. PHP WeatherClient
SOAP ストリームの観察
Weather サービスに正常に接続し、結果が表示されます。しかし、何か問題が発生し、期待した結果が得られなかった場合はどうすればよいでしょうか? ext/soap は、クライアントとサーバー間で交換される SOAP メッセージを表示できるため、問題の特定に役立ちます。
トレース機能は、trace オプションを使用して SoapClient が作成された場合にのみ使用する必要があります。 options 配列パラメーターにトレース オプションを設定し、SoapClient コンストラクターに渡します。コンストラクターの使用を次のように変更します。
$soapClient = new SoapClient("http://localhost:9080/" .
"ItsoWebService2RouterWeb/wsdl/itso/session/WeatherForecastEJB.wsdl",
array('trace' = > 1));
そしてgoForecastを呼び出した後にtraceメソッドを呼び出します:
echo "Request :
", htmlspecialchars($soapClient->__getLastRequest()), "
";
echo "Response :
__getLastResponse()), "
";
htmlspecialchars 組み込み関数を使用してトレース出力をエンコードしてください。これは、SOAP XML 区切り文字を < などの特殊文字に変換するためです。 ;、次のようにこれにより、ブラウザがマークアップとして解釈できなくなります。
リクエストのトレース出力は以下の通りです:
<?xml version="1.0"coding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas .xmlsoap.org/soap/envelope/"
xmlns:ns1="http://session.itso">
<SOAP-ENV:Body>
<ns1:getForecast>
<ns1:startDate>2004-11-30T13 : 対応しています 答えは:
<?xml version="1.0"coding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http: //schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001 /XMLSchema-instance">
<soapenv:Body>
<getForecastResponse xmlns="http://session.itso">
<getForecastReturn xmlns:ns-239399687="http://mapping.itso">
<ns- 239399687:条件>晴れ :風向>W ns-239399687:風向>
<ns-239399687:dbflag>1< /ns-239399687:dbflag>
</getForecastReturn>
</getForecastResponse>
</soapenv:Body>
</soapenv:Envelope>
トレース付きクライアントを実行する場合は必須この出力を収集するには、日数パラメータを 0 に設定して、SOAP 応答が出力する行数を減らします。しかし、予期せぬ動作に遭遇しました。 getForecastResponse は以前と同様に Weather オブジェクトの配列であることが予想されますが、4 つの要素ではなく 1 つの要素のみを持つ必要があります。ただし、これは単純な Weather オブジェクトに変換されるため、最後の PHP クライアント コードの例でわかるように、この動作に従ってコーディングする必要があります。これは、サーバー応答に含まれる Weather オブジェクトの数に関係なく、getForecast が常に Weather オブジェクトの配列を返す Java クライアントの動作とは異なります。 SoapClient::_getTypes() の出力には、この違いを理解するのに十分な詳細が示されていないため、完全なインターフェイス仕様を理解するには WSDL ドキュメントを参照します。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Web 開発の分野では、Web サービスは、さまざまなアプリケーションが相互に通信して、より複雑で強力なシステムを構築できるようにする非常に重要なテクノロジです。この記事では、PHP と SOAP を使用して Web サービスの呼び出しと開発を実装する方法を詳しく説明します。 SOAP (SimpleObjectAccessProtocol) は、異なるアプリケーション間の情報交換に使用される XML ベースのプロトコルです。 SOAP は重要な Web サービス標準です

PHP と SOAP: リモート プロシージャ コール (RPC) の実装方法 はじめに: 近年、分散システムの台頭により、リモート プロシージャ コール (RPC) が Web 開発に広く採用されています。この記事では、PHP と SOAP を使用して RPC を実装する方法を紹介し、コード例を通じてその使用法を示します。 1. リモート プロシージャ コール (RPC) とは何ですか?リモートプロシージャコール(RemoteProcedureCall、RPC)は通信です

PHP と SOAP: データの同期および非同期処理を実装する方法 はじめに: 最新の Web アプリケーションでは、データの同期および非同期処理がますます重要になってきています。同期処理とは、一度に 1 つのリクエストだけを処理し、そのリクエストの完了を待って次のリクエストを処理することを指します。非同期処理とは、特定のリクエストの完了を待たずに複数のリクエストを同時に処理することを指します。この記事では、PHP と SOAP を使用してデータの同期および非同期処理を実現する方法を紹介します。 1. SOAP の概要 SOAP (SimpleObject)

インターネット テクノロジーの継続的な発展に伴い、データとビジネスの相互作用を実現するために、他のアプリケーションにインターフェイスを提供する必要があるエンタープライズ レベルのアプリケーションがますます増えています。この場合、データを送信し、データの整合性とセキュリティを確保するための信頼できるプロトコルが必要です。 SOAP (Simple Object Access Protocol) は、Web 環境でアプリケーション間の通信を実装するために使用できる XML ベースのプロトコルです。人気の Web プログラミング言語としての PHP

Python を使用した SOAP メッセージの解析 SOAP (Simple Object Access Protocol) は、ネットワーク上の異なるアプリケーション間の通信に使用される XML ベースのリモート プロシージャ コール (RPC) プロトコルです。 Python には、SOAP メッセージを処理するためのライブラリとツールが多数用意されており、その中で最も一般的に使用されるのは suds ライブラリです。 suds は、SOAP メッセージの解析と生成に使用できる Python 用の SOAP クライアント ライブラリです。それはシンプルで、

PHP と SOAP を使用してデータを圧縮および解凍する方法 はじめに: 現代のインターネット アプリケーションでは、データ送信は非常に一般的な操作です。データの圧縮および解凍技術の使用は、非常に重要なトピックになっています。 PHP 開発では、SOAP (SimpleObjectAccessProtocol) プロトコルを使用してデータの圧縮と解凍を実現できます。この記事ではその方法を説明します

PHP と SOAP を使用して Web サービスを展開および公開する方法 はじめに: 今日のインターネット時代では、Web サービスの展開と公開は非常に重要なトピックになっています。 PHP は一般的なサーバー側プログラミング言語ですが、SOAP (Simple Object Access Protocol) は Web サービス間の通信に使用される XML プロトコルです。この記事では、PHP と SOAP を使用して Web サービスをデプロイおよび公開する方法を紹介し、いくつかのコード例を示します。

PHP と SOAP を使用して Web ベースのアプリケーションを構築するための完全ガイド 今日のインターネット時代において、Web ベースのアプリケーションはデータを管理し、データと対話するための重要なツールとなっています。 PHP は強力な開発言語として他のテクノロジーとシームレスに統合でき、XML ベースの通信プロトコルである SOAP (Simple Object Access Protocol) は、Web サービスを構築するためのシンプルで標準的かつ拡張可能な方法を提供します。この記事では、次のことを提供します
