zoukankan      html  css  js  c++  java
  • 使用python开发WebService

    使用python开发WebService

    分类: web linux


    一个基本的 python web service 开发环境由以下这些工具组成:
    Python2.4,Eclipse WTP,PyDev plug-in,Python ZSI包
    ZSI 还依赖与一些其它的 python 开源包:SOAPy,pyXML
    建议在*nix环境下使用,原因是pyXML的windows安装包只认python2.4。
    步骤:
    1.创建wsdl文件
    1.1 在Eclipse中,创建一个python项目,
    1.2 点击菜单 File->New 选择 Other,在弹出的对话框中选择WSDL文件,然后图形化方式创建wsdl文件。

    2.编写WebService服务端代码
    2.1 创建框架代码
    使用ZSI提供的脚本来轻松创建:
    wsdl2py -b -f your.wsdl
    wsdl2dispatch -f your.wsdl
    运行以上两条命令后,会生成三个文件:
    myServices_services.py , myServices_services_server.py , myServices_services_types.py
    2.2 创建服务实现代码
    用来实现每个 web 服务的具体代码,例如命名为 serviceImpl.py
    from myServices_services_server import *
    from time import time,ctime
    from ZSI.ServiceContainer import AsServer
    class mySoapServices(myServices):
        def soap_getTime(self,ps):
            try:
                rsp = myServices.soap_getTime(self, ps)
                request = self.request
                rsp.set_element_timeStr(ctime())
            except Exception, e:
                print str(e)
            return rsp
    首先导入 myServices_services_server,它是由 wsdl2py 脚本生成的 Web 服务框架代码。类 myServices 是 web 服务的基础类,每一个 web 服务都对应其中的一个方法。getTime 对应 myServices 类中的 soap_getTime 方法。缺省的 soap_getTime 方法只是一个基本框架,但完成了 soap 解析并且能返回该服务的入口参数对象。
    为了实现 getTime,我们需要重载 soap_getTime 方法。定义新类 mySoapServices,继承自 myServices。在 mySoapServices 类中重载父类的 soap_getTime() 方法。
    getTime 的主要功能是返回一个表示当前时间的字符串。python 系统函数 ctime,就可以得到当前的系统时间。重载 soap_getTime() 函数中,首先调用父类的 soap_getTime() 方法,得到返回值对象rsp。
    调用返回值对象 rsp 的 set_element_xxx() 方法,就可以对返回值对象中的元素进行赋值。这个方法是由 wsdl2py 的 -b 选项生成的。
    set_element_timeStr(ctime()) 将返回值的 timeStr 元素赋值为代表当前时间的字符串。

    3 发布WebService
    可以使用ZSI内置服务器来发布。
    from ZSI.ServiceContainer import AsServer
    from serviceImpl import mySoapServices
    from ZSI import dispatch
    if __name__ == "__main__":
        port = 8888
        AsServer(port,(mySoapServices('test'),))

    4.编写java客户端测试
    4.1 首先创建一个 Web Project。
    打开 File->New->Other…->Dynamic Web Project,创建一个新的工程。
    4.2 然后就可以创建 java 客户端。
    选择 File -> New -> Other... -> Web Services -> Web Service Client

    用 Eclipse 的 WTP 开发 WSDL 文件,用 python 实现 Web 服务都比较简单而快速。用这两个强大的工具能够迅速地开发 Web 服务应用,适用于原型产品的快速开发。 

    以上在ubuntu环境测试通过,测试时,遇到的问题主要是因为没有安装python的开发包,造成pyXML安装不上,ZSI不能正常的运行,总是提示服务不存在。安装了python-dev包后解决。但是会提示pyXML使用了不推荐的函数,不必理会。


    参考原文
    http://www.ibm.com/developerworks/cn/opensource/os-cn-pythonws
    Eclipse WTP
    http://download.eclipse.org/webtools/downloads/
    pyDev
    http://pydev.sourceforge.net/download.html
    python ZSI
    http://pywebsvcs.sourceforge.net/
    SOAPy
    http://soapy.sourceforge.net/
    pyXML
    http://sourceforge.net/projects/pyxml/

  • 相关阅读:
    fwt
    fft,ntt
    loj6077
    高维前缀和
    hihocoder 1496 寻找最大值
    HDU 5977 Garden of Eden
    扩展crt
    有标号的DAG计数I~IV
    BZOJ 3160 万径人踪灭
    Codeforces Round #524 (Div. 2) F
  • 原文地址:https://www.cnblogs.com/L-H-R-X-hehe/p/3815301.html
Copyright © 2011-2022 走看看