Home > Backend Development > PHP Tutorial > PHP uses SOAP extension to implement WebService method, soapwebservice_PHP tutorial

PHP uses SOAP extension to implement WebService method, soapwebservice_PHP tutorial

WBOY
Release: 2016-07-12 08:55:24
Original
1024 people have browsed it

PHP uses SOAP extension to implement WebService, soapwebservice

This article describes the example of PHP using SOAP extension to implement WebService. Share it with everyone for your reference, the details are as follows:

Recently, connecting external interfaces in a PHP project involves WebService. There are not many related articles on search engines. Most of the ones found refer to a so-called powerful open source software NuSOAP (download address: http://sourceforge.net/projects /nusoap/), that is, some classes. The environment described in the article is PHP 4.3. Nowadays, PHP 5.2 or PHP 5.3 is popular. I tried it first and ran it wrong. It turns out that the soapclient class provided by NuSOAP conflicts with the new built-in SOAP extension SoapClient class in PHP 5.

Although NuSOAP claims to be used in all PHP environments, it is not affected by server security settings. However, I need to reference a lot of class files, so I still think it is better to use the built-in SOAP extension added in PHP 5, as long as it can be practical. First understand SOAP:

1. Comparison between SOAP and XML-PRC

In the early days of Web services, the first major use of XML formatted messages was in the XML-RPC protocol, where RPC stands for Remote Procedure Call. In XML Remote Procedure Call (XML-RPC), the client sends a specific message that must include the name, the program running the service, and the input parameters.

XML-RPC can only use limited data types and some simple data structures. People thought that this protocol was not powerful enough, so SOAP appeared - its original definition was Simple Object Access Protocol. After that, everyone gradually realized that SOAP is not simple, and it does not require the use of object-oriented language, so now people just use the name SOAP.

XML-RPC only has a simple set of data types. Instead, SOAP defines data types by leveraging the continuous development of XML Schema. At the same time, SOAP can also utilize XML namespaces, which is not required by XML-RPC. This allows the beginning of a SOAP message to be any type of XML namespace declaration, at the cost of adding more complexity and incompatibilities between systems.

With the awakening of the computer industry, people discovered the business potential of XML-based Web services, so companies began to continuously explore ideas, opinions, arguments, and standardization attempts. The W3C once tried to organize an achievement exhibition under the name of "Web Services Activities", which also included the XML Protocol Working Group (XML Protocol Working Group) that actually made SOAP. The number of standardization efforts related to Web services that are in some way related to or dependent on SOAP has doubled to an astonishing degree.

Originally, SOAP was developed as an extension of XML-RPC. Its main emphasis is to make remote procedure calls through method and variable names obtained from WSDL files. Now, through continuous advancement, people have found more ways to use SOAP than just the "file" method - basically using a SOAP envelope to send XML formatted files. In any case, to master SOAP, it is fundamental to understand the role played by WSDL.

2. SOAP packet structure analysis

SOAP message is called a SOAP Envelope, including SOAP Header and SOAP Body. Among them, SOAP Header can easily insert various other messages to expand the functions of Web Service, such as Security (using certificates to access Web Service), and SOAP Body is the specific message text, which is the information after Marshall.

When calling SOAP, that is, sending an HTTP Post message to a URL (such as http://api.google.com/search/beta2) (according to the SOAP specification, HTTP Get messages can also be supported), calling The name of the method is given in the HTTP Request Header SOAP-Action, followed by the SOAP Envelope. The server receives the request, performs the calculation, Marshalls the returned result into XML, and returns it to the client using HTTP.

3. Simple example of SOAP

There are generally three options for SOAP development:

1), PEAR’s own SOAP extension;
2), PHP’s own SOAP extension;
3), NuSOAP (pure PHP).

PHP 5 adds built-in SOAP extensions, which are provided as part of PHP, so there is no need to download, install and manage separate packages. This is the first SOAP implementation written in C instead of PHP for PHP, so the author claims it is significantly faster. Relevant documentation is included in the Function Reference section of the PHP manual (php_soap.dll).

An example of a client accessing .NET WEB services:

< &#63; php
$objSoapClient = new SoapClient("http://www.webservicemart.com/uszip.asmx&#63;WSDL");
$param = array("ZipCode"=>'12209'); 
$out = $objSoapClient->ValidateZip($param);
$data = $out->ValidateZipResult;
echo $data;
&#63;>

Copy after login

4. Examples

1), Use PHP to create SOAP service

Create soap_server.php (virtual path is: http://localhost/php/soap/soap_server.php)

< &#63; php
/**
* A simple math utility class
*/
class math{
  /**
  * Add two integers together
  *
  * @param integer $a The first integer of the addition
  * @param integer $b The second integer of the addition
  * @return integer The sum of the provided integers
  */
  public function add($a, $b){
    return $a + $b;
  }
  /**
  * Subtract two integers from each other
  *
  * @param integer $a The first integer of the subtraction
  * @param integer $b The second integer of the subtraction
  * @return integer The difference of the provided integers
  */
  public function sub($a, $b){
    return $a - $b;
  }
  /**
  * Div two integers from each other
  *
  * @param integer $a The first integer of the subtraction
  * @param integer $b The second integer of the subtraction
  * @return double The difference of the provided integers
  */
  public function div($a, $b){
    if($b == 0){
      throw new SoapFault(-1, "Cannot divide by zero!");
    }
    return $a / $b;
  }
}
$server = new SoapServer('math.wsdl', array('soap_version'=>SOAP_1_2));
$server->setClass("math");
$server->handle(); 
&#63;>

Copy after login

Note:

a), math class is a webservice that will be made public soon;
b), $server->setClass, not $server->addClass.
2) Use PHP client to access the newly created SOAP service

< &#63; php
// $client = new SoapClient('http://localhost/php/soap/math.wsdl');
$client = new SoapClient("http://localhost/php/soap/soap_server.php&#63;WSDL");
try{
  $result = $client->div(8, 2); // will cause a Soap Fault if divide by zero
  print "The answer is: $result";
}catch(SoapFault $e){
  print "Sorry an error was caught executing your request: {$e->getMessage()}";
}
&#63;>

Copy after login

Essentially, http://localhost/php/soap/soap_server.php?WSDL is to access the wsdl description file pointed to by the comment line, so this WSDL file must be generated in advance. For other languages ​​such as Java, it can be generated dynamically. For the SOAP extension that comes with PHP, this WSDL file must be generated in advance.

可以用ZendStudio生成静态的WSDL文件,此时用到math类的phpdoc作为生成WSDL的元数据。用ZendStudio生成wsdl文件时,必须正确说明Web服务目标地址,片断如下:

...
  <service name="mathService">
    <port binding="typens:mathBinding" name="mathPort">
      <soap:address location="http://localhost/php/soap/soap_server.php"></soap:address>
    </port>
  </service>
...

Copy after login

注:调用PHP Webserver的方法必须传入命名参数。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

您可能感兴趣的文章:

  • PHP使用SOAP调用.net的WebService数据
  • PHP使用NuSOAP调用Web服务的方法
  • PHP实现Soap通讯的方法
  • PHP中soap的用法实例
  • 重新封装zend_soap实现http连接安全认证的php代码
  • PHP XML error parsing SOAP payload on line 1
  • PHP调用.NET的WebService 简单实例
  • PHP实现WebService的简单示例和实现步骤
  • php实现webservice实例
  • php中创建和调用webservice接口示例
  • PHP调用JAVA的WebService简单实例
  • php如何调用webservice应用介绍
  • 在PHP中利用wsdl创建标准webservice的实现代码

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1117043.htmlTechArticlePHP使用SOAP扩展实现WebService的方法,soapwebservice 本文实例讲述了PHP使用SOAP扩展实现WebService的方法。分享给大家供大家参考,具体如下: 最...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template