SOAP
1. Simple Object Access Protocol Simple Object Access Protocol
It mainly includes the following four parts:
a) SOAP encapsulation: used to encapsulate the content of the transmitted data, the sending end message, the receiving end information and the processing method to prepare for data transmission.
b) SOAP encoding rules: used to represent the data type and other information of each item in the transmitted data
c) SOAP remote procedure call protocol: a protocol for remote procedure calls and responses
d) SOAP binding protocol: the underlying protocol used to represent information exchange
Ø SOAP application and configuration in PHP5
================================================== =======================
1. PHP 5 adds a built-in SOAP extension, which we call ext/soap. It is provided as part of PHP, so there is no need to download, install and manage separate packages.
2. ext/soap may have been compiled but not loaded, so the PHP configuration needs to be updated so that ext/soap is loaded. Edit php.ini and find the Dynamic Extensions section and add a line of code here to automatically load the extension. On Windows, this line of code is: extension=php_soap.dll
If you have not previously loaded any optional extensions, you may also want to set the extension_dir directive to point to the directory containing the extension libraries (including php_soap ):
extension_dir=”C:/php/ext/” (use forward slash on Windows)
3. After completing the configuration, ext/soap displays:
[soap]
; Enables or disables WSDL caching feature.
soap.wsdl_cache_enabled=1
; Sets the directory name where SOAP extension will put cache files.
soap.wsdl_cache_dir=”/tmp”
; (time to live) Sets the number of second while cached file will be used
; instead of original one.
soap.wsdl_cache_ttl=86400
This configuration controls the WSDL caching feature of the SOAP extension. By default, WSDL description files are cached in the /tmp directory for 24 hours (86400 seconds). Set soap.wsdl_cache_enabled=0 now, otherwise you will encounter some strange behavior when developing your code. After you're done developing, remember to turn on WSDL caching to make your code run faster.
================================================== ======================
SOAP extension library (mainly includes three types of objects)
1. SoapServer: used to define functions that can be called and return response data when creating a PHP server page.
The format is: $soap = new SoapServer($wsdl, $array);
Note: $wsdl is the WSDL file used by SOAP, which is a standard format for describing WebService. Set to NULL to not use the WSDL mode. If you want to use it, you can use ZED to generate it.
$array is the attribute information of SoapServer, which is an array.
Note: $array includes a uri, and encoding, and if it is a client program, it also contains a location.
The 'uri' option is required, but its value can be filled in at will. It can be empty ("), but it cannot be null.
‘encoding’ is necessary for Chinese processing, generally fill in ‘gb2312′ (otherwise an error will occur, because the default is ‘utf-8′).
The addFunction method of this object is used to declare which function can be called by the client,
The syntax format is: $soap -> addFunction($function_name);
The handle method of this object is used to process user input and call the corresponding function, and finally returns the processed result to the client,
The syntax format is: $soap -> handle([$soap_request]);
Note: $soap_request is an optional parameter used to represent the user's request information. If not specified, it means that the server will receive all the user's requests.
2. SoapClient: used to call the SoapServer page on the remote server and implement the call to the corresponding function.
The syntax format is: $soap = new SoapClient($wsdl, $array);
Note: For soap client, the 'location' and 'uri' options are required; 'location' must be the URL of the soap server, which must be accurate, but the uri seems to be filled in casually, but it is best to be consistent with the uri in the soap server. . And 'encoding' is required for Chinese users
After creating the object, calling the function in the server page is equivalent to calling the SoapClient method
The syntax format is: $soap -> user_function($params);
Note: user_function is one or several functions defined on the server side that can be called.
3. SoapFault: used to generate errors that may occur during SOAP access.
The syntax format is: $fault = new SoapFault($faultcode, $faultstring);
Note: $faultcode is a user-defined error code. If it is not defined, it should be HTTP (in my impression). $faultstring is a user-defined error message.
This object will be automatically generated when an error occurs on the server-side page, or the user can create a SoatFault object to obtain the corresponding error information.
After capturing the SoapFault object on the client, you can obtain the error information of the error code through the following code
$fault -> faultcode; // Error code
$fault -> faultstring; // Error message
Example below:
soapserver.php
view source
print
?01.
02.
03.function reserve($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->handle();
13.?>
soapclient.php
view source
print
?01.
02.
03.try{
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.}catch(SoapFault $fault){
12.
13.echo "FAULT!Code:".$fault->faultcode."String:".$fault->faultstring;
14.
15.}
16.
17.?>
输出的结果为:id=3&tag=PHP+MYSQL&search=soap.
成功。。。
摘自 阳光司达