石鹸
1. シンプルオブジェクトアクセスプロトコル シンプルオブジェクトアクセスプロトコル
主に次の 4 つの部分で構成されます:
a) SOAP カプセル化: データ送信の準備のため、送信データの内容、送信側メッセージ、受信側情報、処理方法をカプセル化するために使用されます。
b) SOAP エンコーディング ルール: 送信データ内の各項目のデータ型とその他の情報を表すために使用されます
c) SOAP リモート プロシージャ コール プロトコル: リモート プロシージャ コールと応答に使用されるプロトコル
d) SOAP バインディング プロトコル: 情報交換を表すために使用される基礎となるプロトコル
Ø PHP5 での SOAP アプリケーションと構成
================================================= =======================
1. PHP 5 では、ext/soap と呼ばれる組み込み SOAP 拡張機能が追加されています。 PHP の一部として提供されるため、個別のパッケージをダウンロード、インストール、管理する必要はありません。
2. ext/soap はコンパイルされていてもロードされていない可能性があるため、ext/soap がロードされるように PHP 構成を更新する必要があります。 php.ini を編集し、「動的拡張機能」セクションを見つけて、拡張機能を自動的にロードするコード行をここに追加します。 Windows では、このコード行は次のようになります: extension=php_soap.dll
これまでにオプションの拡張機能をロードしたことがない場合は、拡張ライブラリ ( php_soap を含む) を含むディレクトリを指すように extension_dir ディレクティブを設定することもできます:
extension_dir=”C:/php/ext/” (Windows ではスラッシュを使用します)
3. 設定が完了すると、ext/soap に次のように表示されます。
【石鹸】
; WSDL キャッシュ機能を有効または無効にします。
soap.wsdl_cache_enabled=1
; SOAP 拡張機能がキャッシュ ファイルを配置するディレクトリ名を設定します。
soap.wsdl_cache_dir=”/tmp”
; (存続時間) キャッシュされたファイルが使用される秒数を設定します
; オリジナルのものの代わりに。
soap.wsdl_cache_ttl=86400
この構成は、SOAP 拡張機能の WSDL キャッシュ機能を制御します。デフォルトでは、WSDL 記述ファイルは /tmp ディレクトリに 24 時間 (86400 秒) キャッシュされます。ここで、soap.wsdl_cache_enabled=0 を設定します。そうしないと、コードの開発時に奇妙な動作が発生します。開発が完了したら、コードの実行を高速化するために、必ず WSDL キャッシュをオンにしてください。
================================================= ======================
SOAP拡張ライブラリ(主に3種類のオブジェクトが含まれます)
1. SoapServer: PHP サーバー ページの作成時に呼び出して応答データを返すことができる関数を定義するために使用されます。
形式は次のとおりです: $soap = new SoapServer($wsdl, $array);
注: $wsdl は、SOAP で使用される WSDL ファイルであり、WebService を記述するための標準形式です。WSDL モードを使用しない場合は、ZED を使用して生成できます。
$arrayはSoapServerの属性情報であり配列です
注: $array には URI とエンコーディングが含まれており、クライアント プログラムの場合は場所も含まれます。
「uri」オプションは必須ですが、その値は空 (") にすることができますが、null にすることはできません。
「エンコーディング」は中国語の処理に必要で、通常は「gb2312」を入力します(デフォルトは「utf-8」であるため、そうでない場合はエラーが発生します)。
このオブジェクトの addFunction メソッドは、クライアントがどの関数を呼び出すことができるかを宣言するために使用されます
構文形式は次のとおりです: $soap -> addFunction($function_name);
このオブジェクトのハンドル メソッドは、ユーザー入力を処理し、対応する関数を呼び出すために使用され、最終的に処理された結果をクライアントに返します
構文形式は次のとおりです: $soap -> handle([$soap_request]);
注: $soap_request は、ユーザーのリクエスト情報を表すために使用されるオプションのパラメーターです。指定しない場合は、サーバーがユーザーのリクエストをすべて受信することを意味します。
2. SoapClient: リモートサーバー上の SoapServer ページを呼び出し、対応する関数への呼び出しを実装するために使用されます。
構文形式は次のとおりです: $soap = new SoapClient($wsdl, $array);
注: SOAP クライアントの場合、「location」オプションと「uri」オプションが必要です。「location」は SOAP サーバーの URL である必要があり、正確である必要があります。ただし、URI は無造作に入力されているように見えますが、そうするのが最善です。 SOAP サーバーの URI と一致している必要があります。また、中国のユーザーには「エンコーディング」が必要です
。
オブジェクトを作成した後、サーバー ページで関数を呼び出すことは、SoapClient メソッドを呼び出すことと同じです
構文形式は次のとおりです: $soap -> user_function($params);
注: user_function は、サーバー側で定義され、呼び出すことができる 1 つまたは複数の関数です。
3. SoapFault: SOAP アクセス中に発生する可能性のあるエラーを生成するために使用されます。
構文形式は次のとおりです: $fault = new SoapFault($faultcode, $faultstring);
注: $faultcode はユーザー定義のエラー コードです。定義されていない場合は、(私の印象では) $faultstring はユーザー定義のエラー メッセージです。
このオブジェクトは、サーバー側のページでエラーが発生したときに自動的に生成されます。または、ユーザーが SoatFault オブジェクトを作成して、対応するエラー情報を取得できます。
クライアント側で SoapFault オブジェクトをキャプチャした後、次のコードを通じてエラーコードのエラー情報を取得できます
$fault -> // エラーコード
;
$fault -> // エラーメッセージ
;
以下の例:
ソープサーバー.php
ソースを見る
印刷
?01.
02.
03.関数予約($arr){
04.return http_build_query($arr);
05.}
06.
07.$soap = new SoapServer(NULL,array('uri'=>'http://www.xhbin.com'));
08.
09.//オブジェクトにユーザー定義関数を追加します
10.$soap->addFunction('reserve');
11.
12.$soap->ハンドル();
13.?>
ソープクライアント.php
ソースを見る
印刷
?01.
02.
03.試してみる{
04.
05.$client = new SoapClient(NULL,array('location'=>'http://localhost/exercise/soap/soapserver.php','uri'=>'http://www.xhbin.com '));
06.
07.$arr = array('id'=>3,"tag"=>"PHP MYSQL","search"=>"soap");
08.
09.echo $string = $client->reserve($arr);
10.
11.}キャッチ(SoapFault $fault){
12.
13.echo "FAULT!コード:".$fault->faultcode."String:".$fault->faultstring;
14.
15.}
16.
17.?>
出力結果は次のようになります: id=3&tag=PHP+MYSQL&search=soap.
成功。 。 。
サンシャインスターより抜粋