私が知っている Web サービスには、PHP 独自の SOAP、オープンソースの NUSOAP、商用版の PHPRPC、バイナリ送信データ ストリームを使用する HessianPHP などがあります。これらの PHP の Web サービスを簡単に紹介します。この点に関する情報はインターネット上にありますが、これは私の個人的な実践であり、もちろんオンラインで見つけた情報をここにメモしておきます。
1: PHP 独自の SOAP
すべての Web サービスにはサーバーとクライアントが含まれます。
PHP 独自の SOAP を使用するには、まず拡張機能をインストールして有効にする必要があります。具体的なコードを見てみましょう
まず、これはサーバー側の実装です:
PHP コード
<?php class test { function show() { return 'the data you request!'; } } function getUserInfo($name) { return 'fbbin'; } //实例化的参数手册上面有,这个是没有使用wsdl的,所以第一个参数为null,如果有使用wsdl,那么第一个参数就是这个wsdl文件的地址。 $server = new SoapServer(null, array('uri' ='http://soap/','location'='http://localhost/test/server.php')); $server->setClass('test'); //$server->addFunction('getUserInfo'); $server->handle(); ?>
次に、クライアント
PHP コード
$soap = new SoapClient(null, array('location'='http://localhost/test/server.php','uri' ='http://soap/')); echo $soap->show(); //得到:'the data you request!' //echo $soap->getUserInfo('sss');
そのときは、とても簡単です。これは非常に単純な例にすぎません。実際、多くの通信メカニズムがこの方法で実装されています。
////////////////////////////////////////////// /// ////////////////////////////////
2: PHPRPC
まず公式ウェブサイトにアクセスします( http://www.phprpc .org/zh_CN/ ) を使用して phprpc の最新バージョンをダウンロードします。解凍後、ファイル (サーバー ファイルとクライアント ファイル) が次のように分割されます。
PHP コード
dhparams dhparams.php phprpc_server.php bigint.php compat.php phprpc_date.php xxtea.php
クライアント ファイル:
PHP コード
phprpc_client.php bigint.php compat.php phprpc_date.php xxtea.php
サーバー ファイルをサーバー フォルダーに配置し、次にクライアント ファイルをクライアント フォルダーに配置し、サーバー フォルダー ファイルに新しいファイルを作成します
サーバー側:
PHP コード
<?php include_once"phprpc_server.php"; //加载phprpc文件 $server = new PHPRPC_Server(); $server->add('getUser'); $server->setDebugMode(true); $server->start(); function getUser( ) { return ‘the data you request!’; }
clientサイド:
PHP コード
<?php include_once "phprpc_client.php"; $client = new PHPRPC_Client('http://127.0.0.1/phpservice/phprpcserver/server.php'); $data = $client->getUser(); var_dump($data); //得到:the data you request!
上記の wsdl について言及した後、それを生成する方法について説明します。
3: オープンソース NUSOAP
まず、インターネットにアクセスして、nusoap の最新バージョンをダウンロードします。解凍後、このファイルをサーバーとクライアントにそれぞれ配置します。 1 つのコピーを作成し、server.php ファイルと client.php ファイルをそれぞれ通信ファイルとしてサーバーとクライアントに作成します。
サーバー側のファイルは次のとおりです:
PHP コード
<?php ini_set("soap.wsdl_cache_enabled", 0);//关闭缓存 require_once("lib/nusoap.php"); //加载nusoap文件 $server = new soap_server; $server->configureWSDL('nusoasp');//设定服务的名称,使用的wsdl来通信,如果不适用wsdl将会更简单,网上有很多的例子 $server->register('getUserInfo', array('name'="xsd:string", 'email'="xsd:string"), array('return'="xsd:string")); $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; $server->service( $HTTP_RAW_POST_DATA ); function getUserInfo($name, $email) { return ‘the data you request!’; }
クライアント側のファイルは次のとおりです:
PHP コード
require_once("lib/nusoap.php"); $client = new soapclient('http://localhost/phpservice/nusoapserver/server.php?wsdl'); $pagram = array('fbbin', 'fbbin@foxmail.com'); $string = $client->call('getUserInfo', $pagram); //得到:the data you request!
Four: HessianPHP
Hessianそれはありませんwebservice は、That's all に似ているとしか言えません。 Webサービスとしての特徴がないからです。多くの言語をサポートしています。ここで必要なのは、HessianPHP の php バージョンをダウンロードすることだけです。解凍後、使用する必要があるコア フォルダーである src ディレクトリが得られます。
HessianPHP に名前を変更してサーバーとクライアントにそれぞれ配置し、server.php と client.php ファイルをそれぞれ作成しました。
サーバー側:
PHP コード
<?php include_once 'HessianPHP/HessianService.php';//加载核心文件 class TestService { public function __construct() { } public function add($numa, $numb) { return $numa + $numb; } public function check() { return 'fbbiin@gmail.com'; } } $test = new TestService(); $hessian = new HessianService( $test, array('displayInfo' => true) ); $hessian->handle();//注意这里不是网上的$hessian->service(),可能是版本不一样,改了吧!我也是看了源码才知道! ?>
クライアント側:
PHP コード
<?php include_once 'HessianPHP/HessianClient.php'; $url = "http://localhost/phpservice/hessianserver/server.php"; $options = new HessianOptions(); $client = new HessianClient( $url, $options ); $num = $client->add( 3, 5 ); echo $num;//得到:8; echo $client->check();//得到:fbbiin@gmail.com;
上記 4 つの方法は、Web 開発プロセスで一般的に使用される Web サービス通信方法です。最も一般的に使用されているのは nusoap ですが、個人的には phprpc は基本的に nusoap に似ていますが、有料です。また、Java を使用しているようで、バイナリ メソッドを使用してデータ ストリームを送信する hessianPHP もあります。実際、それぞれに独自の利点があります。さらに詳しい情報については、Baidu および Google をご覧ください。
以下はwsdlファイルの生成についてです。
Web サービスで通信するために最も一般的に使用され、比較的安全な方法は、wsdl を使用することです。この種のファイルは自分で作成できますが、一部の専門家が作成することは不可能であるようです。 zend Studio ツールを使用して wsdl ファイルを生成します。
次に、zeng スタジオが提供する視覚的な操作を行います。もちろん、実際にはファイルのコードを変更するだけです。理解すれば、それほど難しいことではありません。
このステップを完了すると、WSDL ファイルは基本的に使用できるようになりますが、次の 2 つの問題に注意する必要があります:
このステップを実行した後、おそらくバインディングがないため、テストが失敗する可能性があります。場合によっては手動で行う必要があります。バインディングを右クリックして、[バインディング コンテンツの生成] を選択します (2 つの大きなボックスの中央にある小さなボックスです)。
2 番目に注意すべきことは、php の WSDL キャッシュです。テストを実行するときは、通常、WSDL キャッシュをオフにする必要があります。そうしないと、更新された WSDL ファイルの代わりに元の WSDL ファイルが使用される可能性があります。キャッシュをオフにする方法は 2 つあります。1 つは php.ini で直接soap.wsdl_cache_enabled = 0を設定する方法で、2 つ目はphpファイルにini_set("soap.wsdl_cache_enabled", "0")というステートメントを追加する方法です。 ;
これを実行した後、サーバー プログラムを安全にテストして呼び出すことができます。
以上です、OK!