zoukankan      html  css  js  c++  java
  • 利用soaplib搭建webservice

    soaplib是python的soap框架,可以用来建立webservice.soaplib这样在这里下载:https://github.com/volador/soaplib

    装好soaplib后新建一个test.py,建立一个webservice,实现返回两个整数相加的和。代码如下:

    # -*- coding: cp936 -*-
    import soaplib
    from soaplib.core.util.wsgi_wrapper import run_twisted #发布服务
    from soaplib.core.server import wsgi
    from soaplib.core.service import DefinitionBase  #所有服务类必须继承该类
    from soaplib.core.service import soap  #声明注解
    from soaplib.core.model.clazz import Array #声明要使用的类型
    from soaplib.core.model.clazz import ClassModel  #若服务返回类,该返回类必须是该类的子类
    from soaplib.core.model.primitive import Integer,String
    class C_ProbeCdrModel(ClassModel):
            __namespace__ = "C_ProbeCdrModel"
            Name=String
            Id=Integer
    class AdditionService(DefinitionBase):  #this is a web service      
            @soap(Integer,Integer,_returns=String)
            def addition(self,a,b):
                    return str(a)+'+'+str(b)+'='+str(a+b)       
            @soap(_returns=Array(String))
            def GetCdrArray(self):
                    L_Result=["1","2","3"]
                    return L_Result
            @soap(_returns=C_ProbeCdrModel)
            def GetCdr(self): #返回的是一个类,该类必须是ClassModel的子类,该类已经在上面定义
                    L_Model=C_ProbeCdrModel()
                    L_Model.Name=L_Model.Name
                    L_Model.Id=L_Model.Id
                    return L_Model    
     
            
    if __name__=='__main__':  #发布服务       
            try:
                    print '服务已经开启'
                    from wsgiref.simple_server import make_server
                    soap_application = soaplib.core.Application([AdditionService], 'tns')
                    wsgi_application = wsgi.Application(soap_application)
                    server = make_server('localhost', 7789, wsgi_application)
                    server.serve_forever()
                   
            except ImportError:
                    print 'error'

    在浏览器中访问http://127.0.0.1:7789/SOAP/?wsdl出现一大版的xml而不是访问错误,就说明服务添加成功啦

    在命令行下既可以测试

    >>>from suds.client import Client
    >>> test=Client('http://localhost:7789/SOAP/?wsdl')
    >>> print test.service.addition(1,2)
    1+2=3

    问题注意:代码运行过程中,会出现各种模块没找到,那是因为你没有安装,根据提示,google搜索下载安装就好,如果是windows,找不到exe,zip格式的安装文件,下载tar.gz也行的,解压后在cmd切换到解压目录,执行:python setup.py install便安装成功了。

    第一次建立连接很慢很慢,慢到无法忍受,>>> test=Client('http://localhost:7789/SOAP/?wsdl'),不知道是怎么回事。
    参考来自http://my.oschina.net/volador/blog/79204
  • 相关阅读:
    15、线程
    17、lambda表达式
    16、sockect
    14、反射(reflect)
    13、集合2
    java 基本类型、包装类、字符串之间的转换
    13、集合1
    12、NIO、AIO、BIO二
    12、NIO、AIO、BIO一
    11、流与文件
  • 原文地址:https://www.cnblogs.com/fengfenggirl/p/python_soaplib.html
Copyright © 2011-2022 走看看