Python开发WebService--使用soaplib库
 

使用soaplib开发基于Python语言的WebService主要有以下四个步骤:
一、准备环境
    S1:下载插件Python、soaplib、Twisted、lxml(soaplib依赖于lxml这个库)
    S2:使用easy_install快速安装,如进入Python安装目录下(该目录必须已经添加到环境变量),输入命令:easy_install soaplib,easy_install这个工具会自动  到Internet上帮我们寻找最适合本机安装的版本并自动安装,安装完毕即可。
    S3:我的环境配置:Python 2.7 、Twisted-12.0.0-py2.7、soaplib-2.0.0_beta2-py2.7、lxml-2.3-py2.7-
二、开发WebService
    S1:使用Python开发工具,这里推荐两个Python开发工具(1:JetBrains Pycharm;2:Eclipse),在新建的Py文件中导入以下命名空间:
           import soaplib
    from soaplib.core.util.wsgi_wrapper import run_twisted #(用来启动服务,soaplib1.0不是这样引用的,这是2.0的引用方式)
    from soaplib.core.server import wsgi
    from soaplib.core.service import DefinitionBase #(所有的服务类都继承DefinitionBase基类)
    from soaplib.core.service import soap #(soap标识方法的特性)
    from soaplib.core.model.clazz import Array #(Array是返回集合类型的数据)
    from soaplib.core.model.binary import Attachment
    from soaplib.core.model.clazz import ClassModel #(如果返回的是实体类的话,必须继承ClassModel基类)
    from soaplib.core.model.primitive import Integer,String,Boolean #(Integer是返回整形,String是返回字符串类型,Boolean是返回布尔类型)
  S2:下面是一个简单的例子:
    class HelloWorldService(DefinitionBase):
      @soap(String, _returns=String) #(标识方法的实参以及返回值,输入参数可以定义多个,该方法要求输入字符串,返回字符串)
      def say_hello(self, name):#(如果有传入参数的话,按照顺序写)
        return "Hello %s!" % name#(返回值)
      @soap(_returns=Array(String))#(该方法没有输入参数的定义,返回字符串类型的集合,其中Array中必须写返回的具体数据类型)
      def GetCdrArray(self):
        L_Result=["1","2","3"]#(返回集合数据的格式)
        return L_Result
      @soap(_returns=C_ProbeCdrModel)#(该方法没有输入参数的定义,返回实体类C_ProbeCdrModel类型,类的定义详见最后)
      def GetCdr(self):
        L_Obj=C_ProbeCdr()
        L_Model=C_ProbeCdrModel()
        L_Model.Name=L_Result.Name
        L_Model.Id=L_Result.Id
        return L_Result
    
    class C_ProbeCdrModel(ClassModel):#(返回的是实体类的,必须继承ClassModel基类)
      __namespace__ = "C_ProbeCdrModel"
      Name=String#(定义属性的数据类型为String)不能省略数据类型
      Id=Integer#(定义属性的数据类型为Integer)不能省略数据类型
三、发布Webservice
  if __name__=="__main__":
    soap_app=soaplib.core.Application([HelloWorldService], 'tns')#(中括号伪服务类的名称)
    wsgi_app=wsgi.Application(soap_app)
    print 'listening on 127.0.0.1:7789'
    print 'wsdl is at: http://127.0.0.1:7789/SOAP/?wsdl'
    run_twisted( ( (wsgi_app, "SOAP"),), 7789)#(运行twisted服务器加载该服务)
四、访问Python发布的WebService
  S1:在浏览器重访问http://127.0.0.1:7789/SOAP/?wsdl,如果正常的话,则能看到该服务的描述信息,包括各个方法的输入参数、返回值,以及实体类的信息(如果用到了的话)
  S2:此时使用你自己的开发语言通过添加服务引用进行服务接口的调用就可以了。
 
以上若有纰漏之处,还请不吝点拨,共同提高,非常感谢!

Python开发WebService--使用soaplib库的更多相关文章

  1. python 开发webService

    最近在学习用python 开发webservice,费了半天时间把环境搭好,记录下具体过程,以备后用. 首先系统上要有python.其次要用python进行webservice开发,还需要一些库: 1 ...

  2. 使用python开发WebService

    使用python开发WebService 分类: web linux2009-03-30 11:36 6621人阅读 评论(1) 收藏 举报 webservicepythonsoapimportecl ...

  3. Python开发WebService:REST,web.py,eurasia,Django

    Python开发WebService:REST,web.py,eurasia,Django 博客分类: Python PythonRESTWebWebServiceDjango  对于今天的WebSe ...

  4. Python开发:部分第三方库无法在线安装解决方法

    前言:Python开发:Python2和Python3的共存和切换使用 一.问题如下: 1.截图: 2.错误信息: Could not find a version that satisfies th ...

  5. 基于Python的Webservice开发(一)-简介

    之前为了解决Webservice的开发,直接用Python自带的CGI模块挂在IIS上. 但是该方式开发Soap的接口,需要大量的开发,而且安全方面也存在很多问题. 我推荐关于用Python开发Web ...

  6. python通过webservice连接cmdbuild

    cmdbuild的部署可以查看文章:http://20988902.blog.51cto.com/805922/1541289 部署成功后,访问http://192.168.1.1:8080/cmdb ...

  7. Python开发:Python2和Python3的共存和切换使用

    从python2到python3,这两个版本可以说是从语法.编码等多个方面上都有很大的差别.为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容,也就是说许多针对早期Python2版 ...

  8. Python 开发与测试 Webservice(SOAP)

    WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 理解WebService 1.从表面上看,WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是 ...

  9. 基于Python的Webservice开发(四)-泛微OA的SOAP接口

    一.功能需求 泛微e-cology可以在流程中调用Webservice接口实现与其他系统的联动等复杂功能.但是目前泛微文档中仅提供了调用的方法,但是没有关于接口的相关开发信息. 本次案例是用Pytho ...

随机推荐

  1. 四十四:数据库之SQLAlchemy之join实现复杂查询

    准备工作 from datetime import datetime from sqlalchemy import create_engine, Column, Integer, String, Da ...

  2. 二十九:数据库之SQLAlchemy连接数据库

    手写SQL复用性不高,SQL越复杂越容易出bug,而且容易引起SQL注入,所以现在Ibanez使用orm框架将数据库映射为数据模型,这是使用SQLAlchemy 准备工作,安装SQLAlchemy和P ...

  3. python UI自动化之JS定位

    1.话不多说,直接贴入代码 上面的 document.getElementById 可以替换成别的定位方式,比如: 通过name获取:document.getElementsByName 通过标签获取 ...

  4. Sar监控

    sar 的命令格式为:sar [ -A ] [ -b ] [ -B ] [ -c ] [ -d ] [ -i interval ] [ -p ] [ -q ] [ -r ] [ -R ] [ -t ] ...

  5. unieap platform eclipse.ini vm设置

    -vm C:\Program Files (x86)\Java\jdk1..0_45\bin\javaw.exe -startup plugins/org.eclipse.equinox.launch ...

  6. Action Script 3.0入门基本概念——IDE&编译与运行

    [编写ActionScript代码的工具] ActionScript代码是用纯文本编写的,所以ActionScript程序可以仅由简单的文本编辑器来创建,如Windows上的记事本或Macintosh ...

  7. 【ABAP系列】SAP ABAP 资产类BAPI过账 BAPI_ACC_DOCUMENT_POST

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 资产类BAPI ...

  8. Nginx配置反向代理与负载均衡

    Nginx的upstream目前支持的分配算法: 1.round-robin 轮询1:1轮流处理请求(默认) 每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继 ...

  9. FTP服务器的搭建(CentOS 7)

    注意ip地址为: 虚拟机ip设置 TYPE="Ethernet"BOOTPROTO="static"NAME="enp0s3"DEVICE= ...

  10. 使用lombok.Data编译时无法找到get/set方法

    我的IDEA版本是2019.2 在使用IDEA创建了一个SpringBoot项目,其中一个实体类使用了@Data注解,但是在Service中调用的时候找不到get/set方法. 检查步骤: 1.在St ...