ZendStudio php WebService制作一:简单WebService Demo

转载 2012年03月24日 11:56:18

文章来源:http://www.cnblogs.com/likwo/archive/2009/09/18/1569036.html

在网上找了很多制作PHP的Web Service的例子,但是都不太全面。以下是我的php制作过程。

1. 首先制作提供WebService的php页面。
//myservice.php
<?php
class service
{
  
public function HelloWorld()
  {
      
return  "Hello";
  }
  
public  function Add($a,$b)
  {
      
return $a+$b;
  }
}
//TestSoap.wsd需要在后面采用Zend Studio生成。
$server=new SoapServer('TestSoap.wsdl',array('soap_version' => SOAP_1_2));
$server->setClass("service");
$server->handle();
?>

2.生成WSDL文件。采用Zend Studio生成。
 生成过程:选择菜单File-->Export-->PHP->WSDL FILE
 也就是出现下面的图

选择 next ,出现如下WSDL选择画面

File Name:选择需要生成的WSDL文件存储文件名和路径
Exported file 选择学要前面写的myservice.php文件,可以添加多个。
Classes:选择需要制作WebService的文件,注意:URL:一定要写上myservice.php的 URL.如果提供服务的是其他php页面,那就换成其他的php服务页面。
Global Settings:如下图所示:


选择Finish,生成WSDL文件,下面是Zend Studio里的效果图


3.客户端调用该Web Service
//Client.php
<?php
 
$a=new SoapClient("TestSoap.wsdl");
 
echo $a->HelloWorld();
 
echo("<br />");
 
echo $a->Add(1,2);
?>

到此为止,一个简单的Php WebService制作完成。
扩展:如何用WebService实现数据库的GRUD操作,后续发布。

补充:
TestSoap.wsdl文件到底是什么
<?xml version='1.0' encoding='UTF-8'?>

<!-- WSDL file generated by Zend Studio. -->

<definitions name="TestSoap" targetNamespace="urn:TestSoap" xmlns:typens="urn:TestSoap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">
    
<message name="Add">
        
<part name="a"/>
        
<part name="b"/>
    
</message>
    
<message name="AddResponse">
        
<part name="AddReturn"/>
    
</message>
    
<message name="HelloWorld"/>
    
<message name="HelloWorldResponse">
        
<part name="HelloWorldReturn"/>
    
</message>
    
<message name="Sub">
        
<part name="a"/>
    
</message>
    
<message name="SubResponse">
        
<part name="SubReturn"/>
    
</message>
    
<portType name="servicePortType">
        
<operation name="Add">
            
<input message="typens:Add"/>
            
<output message="typens:AddResponse"/>
        
</operation>
        
<operation name="HelloWorld">
            
<input message="typens:HelloWorld"/>
            
<output message="typens:HelloWorldResponse"/>
        
</operation>
        
<operation name="Sub">
            
<input message="typens:Sub"/>
            
<output message="typens:SubResponse"/>
        
</operation>
    
</portType>
    
<binding name="serviceBinding" type="typens:servicePortType">
        
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
        
<operation name="Add">
            
<soap:operation soapAction="urn:serviceAction"/>
            
<input>
                
<soap:body namespace="urn:TestSoap" use="literal"/>
            
</input>
            
<output>
                
<soap:body namespace="urn:TestSoap" use="literal"/>
            
</output>
        
</operation>
        
<operation name="HelloWorld">
            
<soap:operation soapAction="urn:serviceAction"/>
            
<input>
                
<soap:body namespace="urn:TestSoap" use="literal"/>
            
</input>
            
<output>
                
<soap:body namespace="urn:TestSoap" use="literal"/>
            
</output>
        
</operation>
        
<operation name="Sub">
            
<soap:operation soapAction="urn:serviceAction"/>
            
<input>
                
<soap:body namespace="urn:TestSoap" use="literal"/>
            
</input>
            
<output>
                
<soap:body namespace="urn:TestSoap" use="literal"/>
            
</output>
        
</operation>
    
</binding>
    
<service name="TestSoapService">
        
<port name="servicePort" binding="typens:serviceBinding">
            
<soap:address location="http://localhost/test/soap/myservice.php"/>
        
</port>
    
</service>
</definitions>
但是我发觉他和.net 产生的WSDL不一样。而且通过这种方式有一个弊端,如果我的Service里添加了一个新的方法,需要在重新生成WSDL文件,
而且还经常出错误。但是如果采用Zend WSDL编辑器产生的WSDL感觉更标准写,而且他相对于目前这样的方法不需要删除WSDL重新建,只需要编辑目前已有的。

用php写的一个超简单的webservice

这是我电某专业课上留的小作业,写一个简单的webservice,我这里就用
  • just_young
  • just_young
  • 2014年09月27日 16:18
  • 2021

分享php中四种webservice实现的简单架构方法及实例

本人所了解的webservice有以下几种:PHP本身的SOAP,开源的NUSOAP,商业版的PHPRPC,以及使用二进制传输数据流的HessianPHP,那么一下就简单的介绍下这几种webservi...
  • AloneSword
  • AloneSword
  • 2014年01月02日 11:17
  • 27431

WebService的发布及调用demo

1下载相关文件 1下载地址:http://axis.apache.org/axis2/java/core/download.cgi 2此处下载的是axis2-1.6.2-bin.zip 及 axi...
  • flowerpetalrain
  • flowerpetalrain
  • 2014年09月23日 16:08
  • 1773

WebService简单介绍

Web Service是什么? Web Service并不是一个新的概念,由于早期带宽与存储容量的限制,令它并不被人关注。但是随着带宽与存储容量已经不会构成问题了之后,Web Service逐渐成为...
  • DryKillLogic
  • DryKillLogic
  • 2014年06月10日 09:26
  • 1016

php webservice soapheader 身份验证

什么不说直接上代码soapserver.php
  • mybluesky1983
  • mybluesky1983
  • 2011年03月31日 16:47
  • 3168

php webservice实现客户端提交数据库数据到服务器并返回另一份数据库数据

php webservice实现客户端提交数据库数据到服务器并返回另一份数据库数据
  • m0_37683054
  • m0_37683054
  • 2017年08月12日 08:37
  • 528

php调用axis2 webservice简单案例

整体思路是:利用plugins生成服务aar文件,再把aar文件拷贝到 axis2的WEB-INF/services下面,查看发布成功后,在利用php 或java或其他语言的客户端调用webser...
  • gzq_qiang
  • gzq_qiang
  • 2011年06月24日 13:49
  • 2378

java调用webservice接口完整源码

对方提供的webservice是用c#写的,而我这个方案对于java或c#(亲测过)提供的webservice都可以使用。具体步骤如下: 1、新建一个普通的java项目,在项目上右键new–ot...
  • zl544434558
  • zl544434558
  • 2015年04月03日 15:55
  • 2868

PHP Webservice的发布与调用

PHP Webservice的发布与调用 1.  环境配置配置php.ini,把php_soap.dll前面的分号去掉, 不然会报错class soapserver not found  重启apac...
  • 21aspnet
  • 21aspnet
  • 2011年10月28日 10:55
  • 8006

使用PHP搭建WebService服务器

1、WSDL概念 网络服务描述语言是Web Service的描述语言,它包含一系列描述某个web service的定义。 定义模板: ...
  • baochao95
  • baochao95
  • 2016年11月27日 13:52
  • 3232
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ZendStudio php WebService制作一:简单WebService Demo
举报原因:
原因补充:

(最多只允许输入30个字)