利用php soap实现web service

原文:利用php soap实现web service

php有两个扩展可以实现web service,一个是NuSoap,一个是php 官方的soap扩展,由于soap是官方的,所以我们这里以soap来实现web service.由于默认是没有打开soap扩展的,所以自己先看一下soap扩展有没有打开。

 在soap编写web service的过程中主要用到了SoapClient,SoapServer,SoapFault三个类。

SoapClient类

这个类用来使用Web services。SoapClient类可以作为给定Web services的客户端。
它有两种操作形式:

* WSDL 模式

* Non-WSDL 模式

在WSDL模式中,构造器可以使用WSDL文件名作为参数,并从WSDL中提取服务所使用的信息。

non-WSDL模式中使用参数来传递要使用的信息。

SoapServer类

这个类可以用来提供Web services。与SoapClient类似,SoapServer也有两种操作模式:WSDL模式和non-WSDL模式。这两种模式的意义跟 SoapClient的两种模式一样。在WSDL模式中,服务实现了WSDL提供的接口;在non-WSDL模式中,参数被用来管理服务的行为。

在SoapServer类的众多方法中,有三个方法比较重要。它们是SoapServer::setClass(),SoapServer::addFunction()和SoapServer::handle()。

下面给出实例:
定义一个提供服务的php类,这个类所提供的函数就是web service对外提供的服务

 1 <?php
 2 Class PersonInfo
 3 {
 4     /**
 5      *    返回姓名
 6      *    @return string 
 7      *
 8      */
 9     public function getName(){
10         return "My Name is Chance";
11     }
12 }

13 ?>

下面给出服务器端的代码:

Code
 1 <?php
 2 //包含提供服务的类进来
 3 require_once('PersonInfo.php');
 4 
 5 //wsdl方式提供web service,如果生成了wsdl文件则可直接传递到//SoapServer的构造函数中
 6 //$s = new SoapServer('PersonInfo.wsdl');
 7 
 8 //doesn't work 只有location不能提供web service
 9 //output:looks like we got no XML document
10 //$s = new SoapServer(null,array("location"=>"http://localhost/Test/MyService/Server.php"));
11 
12 //下面两种方式均可以工作,只要指定了相应的uri
13 //$s = new SoapServer(null,array("uri"=>"Server.php"));
14 $s = new SoapServer(null,array("location"=>"http://localhost/Test/MyService/Server.php","uri"=>"Server.php"));
15 
16 $s -> setClass("PersonInfo");
17 
18 $s -> handle();
19 ?>

下面是客户端代码:

Code
 1 <?php
 2 try{
 3     //wsdl方式调用web service
 4     //wsdl方式中由于wsdl文件写定了,如果发生添加删除函数等操作改动,不会反应到wsdl,相对non-wsdl方式
 5     //来说不够灵活
 6     //$soap = new SoapClient("http://localhost/Test/MyService/PersonInfo.wsdl");
 7     
 8     //non-wsdl方式调用web service    
 9     //在non-wsdl方式中option location系必须提供的,而服务端的location是选择性的,可以不提供
10     $soap = new SoapClient(null,array('location'=>"http://localhost/Test/MyService/Server.php",'uri'=>'Server.php'));
11     
12     //两种调用方式,直接调用方法,和用__soapCall简接调用
13     $result1 = $soap->getName();
14     $result2 = $soap->__soapCall("getName",array());
15     echo $result1."<br/>";
16     echo $result2;
17     
18 }catch(SoapFault $e){
19     echo $e->getMessage();
20 }catch(Exception $e){
21     echo $e->getMessage();
22 }
23 
24 ?>

 

时间: 2024-08-17 00:46:22

利用php soap实现web service的相关文章

【求助】.net编写基于soap调用Web Service,对各位应该很容易

问题描述 要做的东西如下(图一),简单的说就是区卫生厅提供了一个WebService接口,让我们各家医院自己编写调用WebService来上传文件(实现定期自动上传,就比以前手动方便快捷).对高手或者有这方面经验的开发者而言,这应该很容易实现吧,请指点啊!感觉很头痛我以前没接触过WebService,不知道如何写这个调用,在网上查了些资料自己按着做了个VB.Net编程实现WebService的本地服务和调用的例子成功了,看上去挺容易的,可回到现实要做的(图一)中东西,发现很多都对不上,不知道如何

[Java] 利用Axis库调用C#的Web Service

[Java] 利用Axis库调用C#的Web Service 编写者 日期 关键词 郑昀@ultrapower 2005-8-2 Java Web Service Axis C#   概述 试图从Java调用C#编写的Web Service,借用了王咏刚的wsCaller源代码中DynamicInvoker类. 开始不清楚DynamicInvoker类的portName的含义,望文生义,以为是8080之类的端口号,实际上是下面wsdl中的wsdl:port 节点的"name"属性值&q

利用Geronimo 2.2创建安全的Web Service应用

随着 Web Service 应用越来越广泛, 如何保证服务能够安全的访问和传输,也逐渐引起开发人员和用户的关注.Web Service 的安全可以从两方面考虑:访问安全和传输安全 ..前者主要指只有授权用户可以访问应用, 而后者侧重于在消息传输过程中如何保证消息的私密性和完整性.本文介绍了如何在 Apache Geronimo 开发和部署安全的 Web Service 应用,以确保信息交互的安全,将侧重介绍如何基于 HTTP/HTTPS 协议保护 Web Service 应用访问和传输的安全.

039_《Delphi6.Kylix2.SOAP.Web Service程序设计篇》

<Delphi6.Kylix2.SOAP.Web Service程序设计篇> Delphi 教程 系列书籍 (039) <Delphi6.Kylix2.SOAP.Web Service程序设计篇> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Pdf 附书源码 作者: 李维 丛书名: 李维作品系列 出版社:机械工业出版社 ISBN:7111099095 上架时间:2002-3-22 出版日期:2002 年3月 页码:412 版次:1-1 内容简介 本书是

翻译-使用Spring WebService生成SOAP Web Service

原文链接:http://spring.io/guides/gs/producing-web-service/ 生成SOAP web service 该指南将带领你使用Spring创建一个基于SOAP的web service的整个过程. 指南内容 你将创建一个服务,该服务通过一个基于WSDL的SOAP web service向外暴露欧洲国家的数据. 注意:为了简化该示例,你将使用硬编码方式嵌入英国,西班牙及波兰. 准备事项 15分钟 喜爱的编辑器或IDE JDK1.6或更高版本 Gradle 1.

翻译-使用Spring调用SOAP Web Service

原文链接: http://spring.io/guides/gs/consuming-web-service/ 调用SOAP web service 本指南将指导你使用Spring调用一个基于SOAP的web service的整个过程. 指南内容 你将构建一个客户端,使用SOAP用来从远端的基于WSDL的web service获取天气数据.请访问http://wiki.cdyne.com/index.php/CDYNE_Weather进一步获取该天气服务的信息. 该服务根据邮编返回天气预测.你可

艾伟_转载:WCF、Net remoting、Web service概念及区别

Windows通信基础(Windows Communication Foundation,WCF)是基于Windows平台下开发和部署服务的软件开发包(Software Development Kit,SDK). WCF就是微软对于分布式处理的 编程技术的集大成者,它将DCOM.Remoting.Web Service.WSE.MSMQ集成在一起,从而降低了分布式系统开发者的学习曲线,并统一了开发标准. WCF是建立在.Net Framework 2.0基础之上的,包含在.NET 3.0/3.5

WCF、Net remoting、Web service概念及区别

Windows通信基础(Windows Communication Foundation,WCF)是基于Windows平台下开发和部署服务的软件开发包(Software Development Kit,SDK). WCF就是微软对于分布式处理的 编程技术的集大成者,它将DCOM.Remoting.Web Service.WSE.MSMQ集成在一起,从而降低了分布式系统开发者的学习曲线,并统一了开发标准. WCF是建立在.Net Framework 2.0基础之上的,包含在.NET 3.0/3.5

Web Service的几个很重要的概念

web|概念 接上次,我们在使用Web Service之前,要先了解一下这么几个东东:1.SOAP          SOAP是Web Service的基本通信协议.因为SOAP与DCOM和CORBA在概念上有相同之处,所以很多人在问:"SOAP是怎样激活对象的?"或"SOAP在使用什么命名服务(Naming Service)?".或许在执行SOAP的过程当中会用到这些,但这些并不在SOAP规范要考虑的范畴之内.SOAP只是定义SOAP消息的XML格式(XML Fo