ホームページ  >  記事  >  バックエンド開発  >  Webサービスインターフェースサービスを実装するPHP SOAPの詳細説明

Webサービスインターフェースサービスを実装するPHP SOAPの詳細説明

藏色散人
藏色散人転載
2020-01-16 17:52:583382ブラウズ

Web サービスとは何ですか? 詳細については説明しませんが、百科事典の説明Web サービス Baidu 百科事典 を参照してください。

Soap は、Web サービスの実装で使用されるプロトコルおよび技術仕様です。

Web サービスのインターフェースを実装するには、wsdl ドキュメントの生成が必要な方法と、wsdl ドキュメントの生成が不要な方法の 2 つの方法があります。

実際に運用する前に、お使いの環境がsoapをサポートしているかどうかを確認し、php.ini設定ファイルを修正して「soap.wsdl_cache_enabled」項目を0に設定してください。

wsdl ドキュメントを生成する必要はありません

このメソッドは、wsdl ドキュメントを生成する必要があるメソッドよりも簡単ですが、Get the __getFunctions などの一部のメソッドはサポートされていません。操作方法の()が適切かどうかはあなたの選択次第です。

サーバー側 ts1.php

<?php
class testA{
        public function sayHi($str){
                return &#39;hi,&#39;.$str;
        }
        public function add($a,$b){
                return $a+$b;
        }
}
$ss = new SoapServer(null, array(&#39;uri&#39;=>&#39;sampleA&#39;));
$ss->setClass(&#39;testA&#39;);
$ss->handle();

サーバー側 ts1.php ファイルで、クラスを作成し、次に SoapServer を作成して設定を行います。一貫性を確保するために uri が使用されます。セックス。

クライアント側 tc1.php

<?php
$client = new SoapClient(null, array(
        &#39;location&#39;=>&#39;http://10.0.0.232:1075/soap/ts1.php&#39;,
        &#39;uri&#39;=>&#39;sampleA&#39;
        ));
echo $client->sayHi(&#39;Taylor,Swift&#39;);
echo "<br/>";
echo $client->add(1,2);

クライアント側では、SoapClient オブジェクトを使用してリクエストを作成します。場所はリクエストの特定のアドレスを指定します。の値はuri はサーバー側で設定したものと同じです。Consistent、一貫性を確保するために使用されます。

ブラウザに http://10.0.0.232:1075/soap/tc1.php と入力してアクセスすると、次のような出力が表示されます:

Webサービスインターフェースサービスを実装するPHP SOAPの詳細説明

この方法はwsdlドキュメントを生成する必要がなく実装が容易ですが、wsdlドキュメントが存在しないため、クライアントは該当する操作メソッドを取得できません。wsdlドキュメントを生成する方法では、クライアントが独自に生成することができます。リクエストアドレスに基づく wsdl ドキュメント サーバーによって公開されているすべてのインターフェイスを取得します。

wsdl ドキュメントの生成方法

wsdl ドキュメントは XML ドキュメントであり、通常はパブリック クラス ライブラリ SoapDiscovery を使用して生成でき、Baidu Netdisk と共有できます。必要に応じて、SoapDiscovery.class.php を直接ダウンロードします。

サーバーサイド ts2.php

<?php
define(&#39;WSDL_FILE&#39;,&#39;ts2.wsdl&#39;);
if(!file_exists(WSDL_FILE)){
        require_once(&#39;SoapDiscovery.class.php&#39;);
        $sd = new SoapDiscovery(&#39;testD&#39;, &#39;liang&#39;);
        $str = $sd->getWSDL();
        file_put_contents(WSDL_FILE, $str);
}
$ss = new SoapServer(WSDL_FILE);
$ss->setClass(&#39;testD&#39;);
$ss->handle();
class testD{
        public function sayHello($world){
                return &#39;hello,&#39;.$world;
        }
        public function add($a, $b){
                return $a+$b;
        }
}

サーバーサイド ts2.php は、まず必要な wsdl ファイルが存在するかどうかを確認し、存在しない場合は作成します。 wsdl ドキュメントを使用しているため、新しい SoapServer を使用するときに wsdl ドキュメントのアドレスを直接記述することができます。

クライアント側 tc2.php

<?php
$client = new SoapClient(&#39;http://10.0.0.232:1075/soap/ts2.wsdl&#39;);
print_r($client->__getFunctions());
echo "<br/>";
echo $client->sayHello(&#39;Avril Lavigne&#39;);
echo "<br/>";
echo $client->add(9,8);

クライアント側の tc2.php ファイルには、SoapClient オブジェクトを作成するときに、要求された wsdl のアドレスを直接入力します。このドキュメントは ts2.php によって生成されます。

サーバー側の ts2.php とクライアント側の tc2.php が記述されたので、今度は ts2.php をリクエストする必要があります。なぜリクエストするのでしょうか?

最初に ts2.php で wsdl ファイルを作成する必要があるため、これはもちろん初回のみで、wsdl ドキュメントの作成後は再度行う必要はありません。

(後で ts2.php が変更された場合でも、古い wsdl ドキュメントを削除してから、ts2.php を再度リクエストして新しい wsdl ドキュメントを生成する必要があります。)

1. ts2 をリクエストします。 .php は、wsdl ドキュメント http://10.0.0.232:1075/soap/ts2.php を生成するために使用されます。

2. 戻り結果を表示するために tc2.php をリクエストします:

Webサービスインターフェースサービスを実装するPHP SOAPの詳細説明

3. ブラウザを通じて、wsdl ドキュメントのアドレスに直接アクセスすると、 wsdl ドキュメントを参照できます。具体的な内容:

Webサービスインターフェースサービスを実装するPHP SOAPの詳細説明

php SOAP は、認証、ヘッダー設定など、他のさまざまな操作もサポートしています。必要に応じて、公式ドキュメントを参照してください。これらの機能のドキュメント。

以上がWebサービスインターフェースサービスを実装するPHP SOAPの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。