用PHP实现webservice,有二种方式:
1,用PHP扩展soap
2,用开源软件nusoap
注:php5内置了soap扩展,php5之前若用soap扩展,需要到PEAR(the PHP Extension and Application Repository)下载。
这里讲解扩展soap的实现方式。
准备工作(配置php.ini):
1,取消extension=php_soap.dll前面的分号;
2,修改soap.wsdl_cache_enabled = 1 为soap.wsdl_cache_enabled = 0(该参数提供WSDL文件缓存,在运行环境中设置1,使用缓存;在调试环境中设置为0,不使用缓存)。
修改php.ini后要重启apache服务器。
non-wsdl模式:
服务器端:SoapHello1.php
<?php //实例化SOAP服务 $server = new SoapServer(null, //non-WSDL模式,不指定WSDL文件 array('uri' => 'www.kingdee.com', 'soap_version' => SOAP_1_2)); //注册提供外部调用的方法 $server->addFunction('hello'); //可以注册方法,也可以注册类: //$server->setClass("class name"); $server->handle(); //注册方法的实现 function hello($name, $password) { if ($password == 'lory' && $name == 'lory') { return 'Welcome lory, how are you?'; } else { return 'Go away!!!'; } } exit(); ?>
该实现中没有支持WSDL,因此也无法将服务器提供的接口暴露。在浏览器中访问服务端文件:
客户端soapclient1.php:
<?php try { //实例化客户端 /*If working in WSDL mode, this parameter is optional. If working in non-WSDL mode, the location and uri options must be set, where location is the URL to request and uri is the target namespace of the SOAP service. */ $client = new SoapClient(null, // non-WSDL模式,不指定WSDL文件 array('location' =>"http://192.168.69.241/MyPHP/SoapHello1.php?wsdl", 'uri' => "http://www.kingdee.com/")); //调用服务端方法,并打印出返回结果 echo $client->hello('lory','lory'); } catch (SoapFault $fault){ echo "Error: ",$fault->faultcode,", string: ",$fault->faultstring; } exit(); ?>
浏览器访问客户端,结果如下:
WSDL模式:
预先生成WSDL文件wsdl/hello.wsdl,该文件可以手写或工具生成(这个WSDL文件实际是由NuSOAP时WSDL模式生成的):
<?xml version="1.0" encoding="ISO-8859-1" ?> <definitions xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://www.sugarcrm.com/sugarcrm" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://www.sugarcrm.com/sugarcrm"> <types> <xsd:schema targetNamespace="http://www.sugarcrm.com/sugarcrm"> <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/" /><xsd:import namespace="http://schemas.xmlsoap.org/wsdl/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/" /> </xsd:schema> </types> <message name="helloRequest"> <part name="user_name" type="xsd:string" /> <part name="password" type="xsd:string" /> </message> <message name="helloResponse"> <part name="return" type="xsd:string" /> </message><input> <soap:body use="encoded" namespace="http://www.sugarcrm.com/sugarcrm" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </input> <output> <soap:body use="encoded" namespace="http://www.sugarcrm.com/sugarcrm" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </output> </operation> </binding> <service name="sugarsoap"> <port name="sugarsoapPort" binding="tns:sugarsoapBinding"> <soap:address location="http://localhost/sugarcrm/SoapLoryTest.php" /> </port> </service></definitions>
服务器端:SoapHello1.php
<?php //实例化SOAP服务 $server = new SoapServer('wsdl/hello.wsdl', //指定WSDL文件,预先生成 array('soap_version' => SOAP_1_2)); //注册提供外部调用的方法 $server->addFunction('hello'); $server->handle(); //注册方法的实现 function hello($name, $password) { if ($password == 'lory' && $name == 'lory') { return 'Welcome lory, how are you?'; } else { return 'Go away!!!'; } } exit(); ?>
在浏览器中访问服务端文件,http://192.168.69.241/MyPHP/SoapHello1.php?wsdl, 可以看到其向外发布的WSDL文件定义信息:
其客户端调用与non-WSDL基本相同,在实例化SoapClient时改为:
$client = new SoapClient('http://192.168.69.241/MyPHP/SoapHello1.php?wsdl');
参考:
http://www.cnblogs.com/chance1/archive/2009/04/08/1431949.html
http://www.ibm.com/developerworks/cn/webservices/1003_chenchen_phpws/
http://hi.baidu.com/chesterphp/item/e61ad8f5733b1d2b743c4c07
相关推荐
### PHP实现WebService:深入解析与实践 #### 引言 在现代软件开发中,Web服务(WebService)作为一种标准的通信协议,允许不同平台、不同语言的应用程序之间进行数据交换和服务调用,极大地促进了系统的集成与互...
在提供的压缩包文件中,"php+webservice"很可能包含了PHP代码文件,用于演示如何调用由MyEclipse创建的Web服务。这些文件可能包括一个PHP脚本,该脚本使用SoapClient类与Web服务交互,以及MyEclipse项目中的源代码和...
SOAP通常用于处理结构化的XML数据,而REST则更倾向于使用JSON格式,但两者都可用于PHP WebService的实现。 在描述中提到的问题是,PHP WebService已经成功实现了文章的传输,但附件部分遇到了困难。这可能是因为...
本文将深入探讨如何在C#环境中调用PHP编写的WebService,并解决可能出现的汉字乱码问题。 首先,让我们理解什么是WebService。WebService是一种基于网络的、独立于平台的应用程序接口(API),它允许不同系统之间...
使用 PHP 搭建 WebService 服务器需要了解 WSDL 概念和结构,了解如何创建 WSDL 文件,并使用 PHP 实现 Web Service 的逻辑。通过本文,我们可以更好地理解 WSDL 概念和 PHP 的应用,提高自己的开发能力。
在这个场景中,我们将探讨如何使用C#调用PHP编写的WebService。 首先,我们需要理解C#与PHP之间的交互机制。C#作为.NET框架的一部分,提供了丰富的类库来消费SOAP(简单对象访问协议)或RESTful(表述性状态转移)...
通过以上步骤,我们可以实现Java客户端调用PHP Webservice服务的功能。整个过程涉及到WSDL的配置、服务方法的定义、请求的发送与响应的处理等多个环节。掌握这些基本流程后,开发者可以根据实际需求灵活地扩展功能和...
本实例将探讨如何在PHP环境中利用Spring框架来实现Web服务(WebService)。Web服务是一种允许不同系统之间交换数据的标准协议,它独立于平台且语言无关。Spring,作为一个Java的开源框架,虽然主要为Java应用设计,...
本文将详细介绍 Oracle 调用 Webservice 的实现过程,包括 Webservice 的基本概念、 Java 编写简单的 WebService 实例、Oracle 服务器端配置、加载 JAR 包、测试调用 PHP Webservice 和 Java Webservice 等内容。...
至于标签“源码”和“工具”,这表明提供的资源可能包含实际的PHP代码或工具,用于演示或实现所述的WebService。在提供的压缩包文件中,"json"可能是包含相关PHP源码的文件名,比如`json_service.php`,里面可能有...
本文将深入探讨PHP Webservice的发布与调用,帮助开发者理解和掌握这一技术。 首先,我们要理解什么是Web服务。Web服务是一种基于网络的,使用标准协议(如HTTP)进行通信的应用程序接口(API)。它们允许不同平台...
**PHP实现Web服务(Webservice)简单示例** 在当今的互联网环境中,Web服务是一种让不同应用程序之间交换数据和协同工作的标准方式。其中,PHP作为流行的服务器端脚本语言,可以借助SOAP(Simple Object Access ...
`laravel-webservice-master`可能是一个包含了示例代码和配置文件的项目,它展示了如何在Laravel中结合httpful实现Web服务。这个项目可能包括了创建API端点、处理请求和响应、认证与授权、错误处理等实践案例,帮助...
Web服务是一种通过网络进行应用程序间通信的方法,而PHP的`Soap`扩展提供了方便的接口来实现这一功能。 首先,让我们了解`SoapServer`。`SoapServer`是PHP中用于创建SOAP服务器端点的类,它能够处理客户端发送的...
PHP作为流行的服务器端脚本语言,与Java结合可以实现强大的功能。 首先,我们需要了解Web服务的基本概念。Web服务通常使用SOAP(Simple Object Access Protocol)或REST(Representational State Transfer)协议。...
标题“php编写webservice soap服务端及客户端”意味着我们将讨论如何使用PHP实现SOAP协议的两个关键部分:服务提供者和服务消费者。 首先,让我们深入了解PHP如何构建SOAP服务端。在PHP中,我们可以使用SoapServer...
PHP+SOAP实现WebService测试 配置 环境配置:PhpStudy(Apache+php5.3) 不需下载任何插件,仅需要在phpStudy中开启php扩展“php_soap”。(见图一) 所需的php_soap.dll自带,位置:D:\phpStudy\...
本文实例讲述了php实现webservice的方法。分享给大家供大家参考。具体实现方法如下: 首先大家要简单了解何谓webservice,接下来就做两个非常简单的例子,webservice还是逃不开server端与client端。 这里的测试环境...
PHP作为一个强大的服务器端脚本语言,提供了多种实现SOAP客户端和服务端的方法。nusoap库就是其中之一,它是一个轻量级且功能强大的工具,允许开发者在PHP环境中轻松创建和消费SOAP Web服务。 **nusoap库介绍** ...