在PHP中利用wsdl创建标准webservice

参照整理:

http://bbs.php100.com/read-htm-tid-95228.html
http://www.ieliwb.com/wsdl-create-soapdiscovery/

说明:

  •     非标准的webservice,可能只能PHP才能访问
  •     标准的webservice,就必须要使用wsdl

在这里我只介绍标准的webservice

一、 创建WSDL

1。网上下载SoapDiscovery.class.php类

2。修改SoapDiscovery.class.php的公共方法getWsdl(),让其自动生成wsdl文件(注意存放路径),这里只是创建一个wsdl模型

1 //return sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>');2         //生成wsdl文件,将上面的return注释3         $fso = fopen($this->class_name . ".wsdl" , "w");4         fwrite($fso, sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>'));5         exit;

3。提供服务的类或者函数

 1 //比如我有个类:person,文件名为:person.class.php,里面有两个方法,一个是say,一个是run。很简单。 2     <?php 3     class person 4     { 5         public function say() 6         { 7             return("i'm speaking."); 8         } 9         public function run()10         {11             return("i'm running,don't disturb me please.");12         }13     }14     ?>

4。开始正式生成wsdl:
    创建文件server.php。将以下内容拷贝进去,运行即可生成一个person.wsdl文件

1 <?php2     include("person.class.php");3     include("SoapDiscovery.class.php");4     //第一个参数是类名(生成的wsdl文件就是以它来命名的),即person类,第二个参数是服务的名字(这个可以随便写)。5     $disco = new SoapDiscovery('person','Person');6     $disco->getWSDL();7     ?>

5。创建webservice服务端程序
    将server.php文件的内容清空,复制以下代码进去:

1   <?php2     include("person.class.php");3     $objSoapServer = new SoapServer("person.wsdl");//person.wsdl是刚创建的wsdl文件4     //$objSoapServer = new SoapServer("server.php?wsdl");//这样也行5     $objSoapServer->setClass("person");//注册person类的所有方法6     $objSoapServer->handle();//处理请求7     ?>

6。创建webservice客户端程序,测试webservice是否有效,文件名是:client.php

 <?php$client = new SoapClient("person.wsdl");//$client = new SoapClient("server.php?wsdl");//这样也行    echo($client->say());echo "<br />";echo($client->run());echo "<br />";    ?>

7。.NET如果要使用的话,你只要提供一个url给他就行了。
获得url的方法:你可以先到person.wsdl文件里面查找<soap:address location="http://xxxxxxxxxxxxxxxxxxxx/server.php" />,这里的url(具体url是根据你的目录确定的)就是你要提供给.NET开发人员使用的。不过别高兴太早,后面要加:“?wsdl”,http://xxxxxxxxxxxxxxxxxxxx/server.php?wsdl这样才是对的,不信你可以将url拷贝到浏览器的地址栏里看下就知道了。
.NET开发人员获得你给他的url之后,就可以在自己的项目里面添加一个服务引用或者web引用了,然后就可以根据提示完成相关操作,对于使用.NET的开发人员来说很简单的。

(1)创建一网站,创建一个web引用,输入url

(2)实力调用

protected void Page_Load(object sender, EventArgs e)    {if (!IsPostBack) {            sdaf.Solsoft_HelloWorld ddd = new sdaf.Solsoft_HelloWorld();            Label1.Text = ddd.say();        }    }

附件下载: CreateSoap.rar

时间: 2024-10-07 09:58:38

在PHP中利用wsdl创建标准webservice的相关文章

在PHP中利用wsdl创建标准webservice的实现代码_php技巧

1.创建wsdl 说明: A.非标准的webservice,可能只能PHP才能访问 B.标准的webservice,就必须要使用wsdl(webservice description language,就是用XML语法标准来描述你的服务内容,我是这么理解的) 在这里我只介绍标准的webservice. 那么如何创建wsdl呢?对于PHP来说这确实是件很不容易的事情,有人说用zend studio创建很方便,这是一种方法.但对于那些不喜欢用zend studio的人来说,会觉得创建一个webser

解析利用wsdl.exe生成webservice代理类的详解_实用技巧

利用wsdl.exe生成webservice代理类:根据提供的wsdl生成webservice代理类1.开始->程序->Visual Studio 2005 命令提示2.输入如下红色标记部分D:/Program Files/Microsoft Visual Studio 8/VC>wsdl /language:c# /n:TestDemo /out:d:/Temp/TestService.cs D:/Temp/TestService.wsdl在d:/Temp下就会产生一个TestServ

VB中利用MapX创建用户定制工具

摘要 本文介绍了VB中如何利用MapX创建用户定制地图工具,详细地说明了整个创建过程,以及在创建定制工具的过程中所使用的关键方法. 1.前言 随着地理信息系统的发展,国内外已出现了不少GIS(地理信息系统)软件,其中MapX是MapInfo公司的ActiveX控件产品.由于它是一种基于Windows操作系统的标准控件,因而MapX4.0支持绝大多数标准的可视化开发环境,如:VisualBasic,Delphi,PowerBuilder,VisualC++等面向对象语言,而且可以使用Lotus s

看实例学VFP:利用多个表中的字段创建新表

本例中再来复习一下select语句中的inner join子句的知识,关于select语句请参考:select SQL 命令 或sql语言教程.本例的主要操作是在表单的init事件中完成的,在该事件中进行连接查询并将查询结果输出为一个临时表(该表包括了"人员信息表"的"姓名,性别,基本工资"3个字段以及"工资表"的"奖金,生活补助,养老保险"3个字段),最后将该表设为表格控件的数据源.本例应用到了数据环境,并使用"数

发布-webservice中的wsdl格式

问题描述 webservice中的wsdl格式 我的是用xfire发布的.我的远程访问的wsdl和别人的有点区别 我的 别人的 几个问题 1:标签中我的是 他的都是 有关系吗.或者是怎么改成他那样的 2:在参数列表中.我的name属性是in1,int2 如何改成他那样的直接知道是要输入什么,name=flag,name=message等 2:如果我想把让我的返回参数弄成多个属性组成的对象,就像他那样的.怎么弄? 解决方案 第一个问题.我的标签都是xsd的,他的是s的,有关系吗.或者如何改成他那样

Java编程中使用XFire框架调用WebService程序接口_java

 JAVA调用webservice,当你刚开始接触的时候你会觉得它是一个恶梦,特别是没有一个统一的标准实现,比起.net的那些几步就可以完成的webservice实现,我们看着JAVA的实现真是伤心啊.但就算是伤心,我们也还是要完成的.JAVA也不乏比较好的实现,如xfire,jersey,CXF. 这里我们就一起来看一下xfire的实现.  1)首先,当然是要下包啦,这个普通人都知道.http://xfire.codehaus.org/Download可以到这里去下,可以下all也可以下dis

利用FrontPage使用XML WebService

frontpage|web|xml   XML Web Service Microsoft? .NET Framework 最令人激动的一点是包含了可扩展标记语言 (XML) Web Service.Web 服务允许应用程序间以基于标准的方式来通信和交换信息.Microsoft 的 Web 服务的实现有许多内在的好处.使用超文本传输协议 (HTTP) 和传输控制协议/Internet 协议 (TCP/IP),可以以 XML 格式交换信息.因此,Web 服务使用现有结构,可以在现有环境中方便地实现

VC++中利用MSXML解析XML文档

c++|xml 四.程序实现 下面通过一个具体的实例来说明在VC++中如何利用MSXML解析XML文档. (1)源XML文档(xmlfile.xml)如下: <?xml version="1.0" encoding="GB2312"?> <Device id="10041" name="设备1"> <Type>13</Type> <TypeName>保护</Ty

在PHP中利用XML技术构造远程服务(转)

xml|远程服务 在PHP中利用XML技术构造远程服务 未来的Web将是以服务为中心的Web,XML_RPC标准使得编写和应用服务变得非常简单.本文介绍XML_RPC标准及其PHP实现,并通过实例示范了如何在PHP中开发XML_RPC服务和客户程序. 一.服务式Web 从内容提供商所采用的简单方法到UDDI(Universal Description,Discovery and Integration)的未来构想,业界已经有大量关于"服务式Web"的说明和评论.就Web的初创阶段来说,