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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
