利用Zend Studio for Eclipse创建(生成)WSDL文件

本文介绍了一种使用PHP创建WebService的方法,包括制作提供服务的PHP页面、生成WSDL文件及客户端调用流程。同时对比了不同工具生成WSDL文件的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网上找了很多制作PHP的Web Service的例子,但是都不太全面。以下是我的php制作过程。
1. 首先制作提供WebService的php页面。
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客//myservice.php
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客<?php
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客class service
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客{
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客  public function HelloWorld()
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客   {
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客      return  "Hello";
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客   }
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客  public  function Add($a,$b)
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客   {
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客      return $a+$b;
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客   }
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客}
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客//TestSoap.wsd需要在后面采用Zend Studio生成。
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客$server=new SoapServer('TestSoap.wsdl',array('soap_version' => SOAP_1_2));
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客$server->setClass("service");
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客$server->handle();
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客?>
2.生成WSDL文件。采用Zend Studio生成。
生成过程:选择菜单File-->Export-->PHP->WSDL FILE
也就是出现下面的图
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客
选择 next ,出现如下WSDL选择画面
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客
File Name:选择需要生成的WSDL文件存储文件名和路径
Exported file 选择学要前面写的myservice.php文件,可以添加多个。
Classes:选择需要制作WebService的文件,注意:URL:一定要写上myservice.php的 URL.如果提供服务的是其他php页面,那就换成其他的php服务页面。
Global Settings:如下图所示:
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客
选择Finish,生成WSDL文件,下面是Zend Studio里的效果图
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客
3.客户端调用该Web Service
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客//Client.php
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客<?php
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客 $a=new SoapClient("TestSoap.wsdl");
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客 echo $a->HelloWorld();
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客 echo("<br />");
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客 echo $a->Add(1,2);
利用Zend Studio for Eclipse创建(生成)WSDL文件 - phpking - phpking的博客?>
到此为止,一个简单的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重新建,只需要编辑目前已有的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值