PHP5 soap web services



一.开发环境:
  1 WAMPserver PHP5.3 + apache + mysql的集成环境
  2.Eclipse + PHP插件
  3。python2.5和PHP5语言版本
二:开发代码
  1.python 做一个服务端,发布为python web services.
 
代码如下:
import soaplib
import soaplib.core
from soaplib.core.service import rpc, DefinitionBase,soap
from soaplib.core.model.primitive import String, Integer
from soaplib.core.server import wsgi
from soaplib.core.model.clazz import Array


class HelloWorldService(DefinitionBase):
    @soap(String,_returns=String)
    def say_hello(self,name):
        results = "hello,"+name;
        return results


if __name__=='__main__':
    try:
        from wsgiref.simple_server import make_server
        soap_application = soaplib.core.Application([HelloWorldService], 'tns')
        wsgi_application = wsgi.Application(soap_application)
        server = make_server('10.21.237.120', 8010, wsgi_application)
        print "8010........."
        server.serve_forever()
    except ImportError:
        print "Error: example server code requires Python >= 2.5"

WSDL地址:http://10.21.237.120:8010/server?wsdl

2.PHP5作为php 客户端调用python web services
代码如下:

<?php

header("content-type:text/html;charset=utf-8");

try {
    //$client = new SoapClient("HelloService.wsdl",array('encoding'=>'UTF-8'));
  $client = new SoapClient("http://10.21.237.120:8010/server?wsdl",array('encoding'=>'utf-8'));
//   var_dump($client->__getFunctions());
//   print("<br/>");
//   var_dump($client->__getTypes());
//   print("<br/>");  

  $parm1 = "KING";
          $param = array('name' => $parm1);
          $arr = $client->say_hello($param);
//   print_r($arr); 
  $ar = get_object_vars($arr);
  print("<br/>");
//   print_r($ar);
  print("<br/>");
  echo $ar["say_helloResult"];

} catch (SOAPFault $e) {

    print $e;
}
?>

三:soap环境的搭建

    这个比较烦恼的事情,WAMP集成了PHP5自带了soap扩展,所谓的扩展就是有soap 的功能!!
   python 端用的是soaplib,官方文档有点错误的,我的代码是根据官方代码修改了下!!
四:遇到问题怎么办
   你可以邮件给我或者QQ1019990976,技术分享,广交天下好朋友。
   我已经录制了视频。

你可能感兴趣的:(PHP,mysql,Web,python,SOAP)