Soap est basé sur les protocoles de communication XML et HTTP. La façon d'utiliser soap en php est d'ajouter le module soap de php, c'est-à-dire d'ajouter "soap.so" au php.ini.
L'environnement d'exploitation de cet article : système Windows7, version PHP7.1, ordinateur DELL G3
1. Que signifie le savon php ? Que sont les wsdl et pourquoi devrions-nous les utiliser ?
SOAP est basé sur les protocoles de communication XML et HTTP et est pris en charge par diverses plates-formes et langages XML. http est pris en charge par tous les navigateurs et serveurs Internet.
WSDL fait référence à Web Services Description Language, qui est un document écrit en XML. Ce document décrit un service Web. Il précise la localisation du service et les opérations assurées par ce service.
Je travaille en PHP, vous travaillez en Java et il travaille en .net. Et si nous voulions tous les trois communiquer et échanger des données ? Nous avons besoin d’un outil capable de communiquer avec nous tous. soap, wsdl ont été créés pour que les applications fonctionnant sur différents systèmes d'exploitation et utilisant différentes technologies et langages de programmation puissent communiquer entre elles.
2. Exemple
Si PHP souhaite utiliser du savon, la méthode habituelle consiste à ajouter le module soap de PHP et à ajouter soap.so dans php.ini. . La méthode pour implémenter soap
//包函nusoap.php require_once('./lib/nusoap.php'); //创建服务端 $server=newsoap_server; //定义客户端调用方法 $server->register('hello'); //调用方法以及参数 functionhello($name) { return'Hello, '.$name; } $HTTP_RAW_POST_DATA= isset($HTTP_RAW_POST_DATA) ?$HTTP_RAW_POST_DATA:''; $server->service($HTTP_RAW_POST_DATA); ?>
p
nusoap est un fichier fonctionnel écrit en PHP. Vous pouvez l'utiliser après l'avoir inclus. Il y en a beaucoup sur Internet, alors recherchez-le vous-même.
1 Cet exemple, qu'il s'agisse du client ou du serveur, est écrit en PHP. Vous pouvez essayer de l'écrire dans plusieurs langues pour le tester. Que vous utilisiez des modules PHP ou nusoap, je n'entrerai pas ici dans les détails des méthodes spécifiques, elles sont toutes dans le manuel. SOAP n'a pas besoin d'être présenté ici. Voici juste un exemple simple d'implémentation de SOAP. Pas grand chose à dire, regardons le code. Soap est divisé en serveur et client. Nous devons faire en sorte que le client appelle le code du serveur. Regardez d'abord le code court du serveur : Voici le code côté serveur : server.php//包函nusoap.php require_once('./lib/nusoap.php'); //新建一个soap客户端,调用服务端提供的wsdl //$client = new soapclient('http://localhost/test/hellowsdl2.php?wsdl', true); $client=newsoapclient('http://localhost/test/helloworld2.php'); //查看一下是不是报错 $err=$client->getError(); if($err) { //显示错误 echo' Constructor error '.$err.' '; } //调用服务端的方法 $result=$client->call('hello',array('person'=>"this is a test")); echo' Result '; print_r($result); echo' '; ?>
//包函nusoap.php require_once('./lib/nusoap.php'); //新建一个soap服务 $server=newsoap_server(); //初始化支持wsdl $server->configureWSDL('hellowsdl2','urn:hellowsdl2'); //定义数据结构来接收数据 $server->wsdl->addComplexType( 'Person', 'complexType', 'struct', 'all', '', array( 'firstname'=>array('name'=>'firstname','type'=>'xsd:string'),//后面的type定义数据的类型,这个是string 'age'=>array('name'=>'age','type'=>'xsd:int'),//后面的type定义数据的类型,这个是int 'gender'=>array('name'=>'gender','type'=>'xsd:string')//后面的type定义数据的类型,这个是string ) ); $server->wsdl->addComplexType( 'SweepstakesGreeting', 'complexType', 'struct', 'all', '', array( 'greeting'=>array('name'=>'greeting','type'=>'xsd:string'), 'winner'=>array('name'=>'winner','type'=>'xsd:string') ) ); //服务器定义的soap调用方法 $server->register('hello',// 方法名字hello,方法就在下面 array('person'=>'tns:Person'),// 客户端传来的变量 array('return'=>'tns:SweepstakesGreeting'),//返回参数 'urn:hellowsdl2',// soap名 'urn:hellowsdl2#hello',// soap的方法名 'rpc',// 使用的方式 'encoded',// 编码 'test'// 存档 ); //定义上面注册过的函数hello functionhello($person) { $greeting='Hello, '.$person['firstname'].'. It is nice to meet a '.$person['age'].' year old '.$person['gender'].'.'; $winner='Scott'; //要返回的数据 returnarray( 'greeting'=>$greeting, 'winner'=>$winner ); } // 请求时(试图)调用服务 $HTTP_RAW_POST_DATA= isset($HTTP_RAW_POST_DATA) ?$HTTP_RAW_POST_DATA:''; $server->service($HTTP_RAW_POST_DATA); ?>
Tutoriel vidéo PHP
"Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!