使用zeng studio 创建的php调用webservice soap简单实例

      这两天一直在研究webservice soap是个什么东西,究竟怎么创建webservice,又如何用php调用webservice的借口,经过奋战,终于总算弄懂一点的。然后我做了一个webservice应用,然后使用php调用其借口,其功能只是简单的用户注册。

      webservice究竟是个什么东东,自己百度吧。首先我来讲讲创建这个webservice的难点,难点就在于如何写出一个正确可用的WSDL文件,只要有了这个WSDL文件,那么其他的工作就一点都不新鲜了,就像你平时编程一样。

      当你看看WSDL文件的时候,可能你头都大了,一大串代码,根本就不知道是什么。后来百度了一下,才知道这个东西只有牛人才可以写出来,我们这些一般的人物是可以用工具生成的,推荐zeng studio。我下的是7.1版的,发现和网上的教程根本不一样(他们可能使用的是旧版本),搞了半天都不知道在哪里生成WSDL文件,网上教程上说的大多数是使用export或者是tool,但你会发现较新版本的这两个都不管用。下面我就来演示一下如何生成这个WSDL文件。

       首先,肯定是要创建PHP工程的。然后我们来创建webservice服务器端的文件,新建一个Class,代码如下:

Action.php


接着是server文件:

server.php

 

客户端测试文件

client.php


下面我们就来生成WSDL文件了,new—>othor—>web service—>WSDL,这样就可以新建一个WSDL文件了,如图。

截图05 截图06 截图07

然后我们就来修改WSDL文件,zeng studio为我们提供了可视化的操作,当然如果你牛的话,你当然是可以改文件代码的,其实也就几个东西,<portType><message><types><binding>弄懂了的话也不会太难。

截图08

 

本例中修改如下图所示:

 截图09

做完这一步,这个WSDL文件就基本可用了,但又两个问题需要注意:

  1. 做到这一步,有可能会测试失败,可能会因为没有进行binding,这个东西有时是需要手动来完成的,在binding上右键选择Generate Binding Content就行了。
  2. 第二个要注意的是php的WSDL缓存,在做测试时,一般要将WSDL缓存关闭,否则你使用的有可能是原来的WSDL文件,而不是更新过的。关闭缓存有两种方法,第一种就是直接到php.ini中设置soap.wsdl_cache_enabled = 0;第二种就是在php文件中添加一条语句,ini_set("soap.wsdl_cache_enabled", "0");

做到这里,你就可以放心地测试,调用你的server程序了。顺便贴上WSDL的代码:

WSDL

posted @ 2011-11-05 22:15  helloxyz  Views(4677)  Comments(2Edit  收藏  举报