Rumah >pembangunan bahagian belakang >masalah PHP >Apakah maksud sabun php?
Sabun adalah berdasarkan protokol komunikasi XML dan HTTP Cara menggunakan sabun dalam php ialah dengan menambah modul sabun php, iaitu menambah "soap.so" pada php.ini.
Persekitaran pengendalian artikel ini: sistem Windows 7, versi PHP 7.1, komputer DELL G3
1 maksud sabun? Apakah wsdl dan mengapa kita harus menggunakannya?
SOAP ialah bahasa berdasarkan protokol komunikasi XML dan HTTP, disokong oleh pelbagai platform xml dan pelbagai bahasa. http disokong oleh semua pelayar dan pelayan Internet.
WSDL merujuk kepada Bahasa Penerangan Perkhidmatan Web, iaitu dokumen yang ditulis dalam XML. Dokumen ini menerangkan perkhidmatan Web. Ia menentukan lokasi perkhidmatan dan operasi yang disediakan oleh perkhidmatan ini.
Saya bekerja dalam PHP, anda bekerja di Java, dan dia bekerja di .net Bagaimana jika kami bertiga ingin berkomunikasi dan bertukar data? Kami memerlukan alat yang boleh berkomunikasi dengan kita semua. soap, wsdl dicipta supaya aplikasi yang berjalan pada sistem pengendalian yang berbeza dan menggunakan teknologi dan bahasa pengaturcaraan yang berbeza boleh berkomunikasi antara satu sama lain.
2. Contoh
Jika php ingin menggunakan sabun, kaedah biasa ialah tambah modul sabun php dan tambah soap.so dalam php.ini , di sini ialah kaedah untuk melaksanakan sabun
//包函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 tanpa menambah fail soap.so
nusoap ialah fail fungsi yang ditulis dalam PHP. Anda boleh menggunakannya jika anda memasukkannya Ya, terdapat banyak dalam talian, jadi cari sendiri.
1. Jangan gunakan wsdl
a 🎜>
a. Bahagian pelayan//包函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' '; ?>b. Bahagian pelanggan
Dua contoh di atas, sama ada klien atau pelayan, ditulis dalam PHP Ya, anda boleh cuba menulisnya dalam pelbagai bahasa untuk mengujinya. Tidak kira sama ada anda menggunakan modul PHP atau nusoap, saya tidak akan menerangkan secara terperinci tentang kaedah khusus di sini, semuanya ada dalam manual.
//包函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); ?>SOAP tidak perlu diperkenalkan di sini. Ini hanyalah contoh mudah untuk melaksanakan SOAP, mari kita lihat kodnya. Sabun dibahagikan kepada pelayan dan pelanggan Kita perlu membuat pelanggan memanggil kod pelayan mula-mula lihat kod pendek pelayan: Ini ialah kod bahagian pelayan: server.php
//包函nusoap.php require_once('./lib/nusoap.php'); //新建一个soap客户端,调用服务端提供的wsdl //$client = new soapclient('http://localhost/test/hellowsdl2.php?wsdl', true); $client = new soapclient('http://localhost/test/helloworld2.php'); //查看一下是不是报错 $err = $client->getError(); if ($err) { //显示错误 echo ' Constructor error ' . $err . ' '; } //要向服务端要传的参数 $person = array('firstname' => 'Willi', 'age' => 22, 'gender' => 'male'); //调用服务端的方法 $result = $client->call('hello', array('person' => $person)); //错误审核 if ($client->fault) { echo ' Fault '; print_r($result); echo ' '; } else { $err = $client->getError(); if ($err) { echo ' Error ' . $err . ' '; } else { echo ' Result '; print_r($result); echo ' '; } } //显示请求信息 echo ' Request '; echo ' ' . htmlspecialchars($client->request, ENT_QUOTES) . ' '; //显示返回信息 echo ' Response '; echo ' ' . htmlspecialchars($client->response, ENT_QUOTES) . ' '; //显示调试信息 echo ' Debug '; echo ' ' . htmlspecialchars($client->debug_str, ENT_QUOTES) . ' '; ?>
dan kemudian gunakan Kod sebelah klien memanggil kod sebelah pelayan: Kod klien juga sangat mudah: seperti berikut: Ini ialah klien kod sebelah klien.php
<?php //声明一个函数add() ,并返回它的值 function add($a,$b){ return $a+$b; } //实例化一个SoapServer对象, 并将add函数注册成为其方法 $server = new SoapServer(null,array('uri'=>'http://localhost/')); //指定server端代码的URI(资源标志符) $server->addFunction("add"); $server->handle();?>ok, sudah tamat!Pembelajaran yang disyorkan: "
Tutorial Video PHP
"<?php //建立一个参数数组,存储要访问的提供soap服务的计算机的地址与程序 $arrOptions=array( 'uri'=>'http://localhost/', 'location'=>'http://localhost/soap/server.php', //注意: 这个location指定的是server端代码在服务器中的具体位置, 我的是在本地根目录下的soap目录中, 'trace'=>true, ); $soapObject = new SoapClient(null,$arrOptions); //实例化客户端对象 echo $soapObject->add(20,30); //调用服务器端的函数add并返回值50?>
Atas ialah kandungan terperinci Apakah maksud sabun php?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!