PHP Web Service实例

在这篇文章中将演示如何使用PHP代码来编写Web Service功能。 这是一个非常初级的Web服务示例,但可将它扩展并在服务器上运行它。需要以下几个步骤 -

  • 什么是SOAP?
  • 为何选择SOAP?
  • 创建Web 方法
  • 使用Web Service

1. 什么是SOAP?

SOAP基于XML,因此被认为是人类可读性较好的文件(代码)。SOAP是用于访问Web服务的协议。 它是一种简单的基于XML的协议,允许应用程序通过HTTP交换信息。

2. 为何选择SOAP?

在实际应用中,通过远程过程调用(RPC)在DCOM和CORBA之类的对象之间进行数据通信需要很多应用程序,但HTTP不是为此而设计的。

  • RPC需要兼容性
  • 安全问题
  • 防火墙和代理服务器通常会阻止此类流量。

在应用程序之间进行通信的更好方法是通过HTTP,因为所有Internet浏览器和服务器都支持HTTP。 这就是为什么它比SOAP服务更可取。

我们可以与其他程序员在多个平台上构建大型和复杂的应用程序进行协作。

3. 编写代码

在这里,将使用PHP代码创建一个Web服务。 所以按照下面给出的步骤:

第1步:首先从 http://sourceforge.net/projects/nusoap/ 下载nusoap库。
第2步:运行WAMP服务器,进入到D:/wamp/www根文件夹位置。
第3步:在D:/wamp/www根文件夹中创建一个文件夹:websoap
第4步:将第1步下载文件中的lib文件夹复制到D:/wamp/www 目录中。
第5步:在websoap 文件夹中创建两个PHP文件 - server.phpclient.php
第6步:在server.php文件里面,编写下面代码内容:

<?php
ini_set('display_errors', 'Off');

//call library 
require_once ('lib/nusoap.php'); 
//using soap_server to create server object 

$server = new soap_server;
$server->soap_defencoding = 'UTF-8';
$server->decode_utf8 = false;
$server->xml_encoding = 'UTF-8';

//$server->register('sayHello', array(name=>xsd:string), array(return=>xsd:string));
//register a function that works on server 
$server->register('sayHello'); 

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
// create HTTP listener 
$server->service($HTTP_RAW_POST_DATA); 


function sayHello($name='Maxsu') {
       return Hello, {$name}!;
}

第7步:创建server.php文件后,现在测试此服务器功能。 打开浏览器并输入URL => http://localhost/wsoap/server.php?wsdl

第8步:在wsoap文件夹创建一个client.php文件,编写下面代码内容:

<?php
ini_set('display_errors', 'On');
require_once ('lib/nusoap.php'); 

//Give it value at parameter 
//Create object that referer a web services 
$client = new soapclient('http://localhost/wsoap/server.php'); 
$client->soap_defencoding = 'UTF-8';
$client->decode_utf8 = false;
$client->xml_encoding = 'UTF-8';

//Call a function at server and send parameters too 
$params=array('name'=>'Maxsu');
$result = $client->call('sayHello', $params);

if (!$err=$client->getError()) {
    echo return: ,htmlentities($result,ENT_QUOTES);
} else { 
    echo Error: ,htmlentities($err,ENT_QUOTES);
}

打开浏览器,打开浏览器访问:http://localhost/wsoap/client.php,得到以下结果 -

这个示例演示了如何使用简单的SOAP Web服务并从客户端的服务获取消息。希望这篇文章能帮助您使用SOAP创建一个简单的Web服务。