• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

利用soaplib搭建webservice详细步骤和实例代码

python 搞代码 4年前 (2022-01-09) 20次浏览 已收录 0个评论

最近在搞基于python的webservice项目,今天为把环境给配好,折腾了不少时间,还是把配的过程记录下来,以后备用:
首先你系统上要有python,这个不必说啦,我系统上用的是2.7+
其次,要用python进行webservice开发,还需要一些库:
lxml :
命令行下 sudo easy_install lxml 就能安装

pytz :
命令行下 sudo easy_install pytz 就能安装

soaplib:
进行webservice开发必须要用的库,可以在https://github.com/volador/soaplib拿到,注意要先安装上面两个插件再安装这个,因为这个依赖于上面两个插件,把zip拿下来后解压,sudo python setup.py install 就能安装了。

Soaplib is an easy to use python library for publishing soap web services using WSDL 1.1 standard, and answering SOAP 1.1 requests. With a very small amount of code, soaplib allows you to write a useful web service and deploy it as a WSGI application.<BR>

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

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

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

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

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

问题注意:代码运行过程中,会出现各种模块没找到,那是因为你没有安装,根据提示,google搜索下载安装就好,如果是windows,找不到exe,zip格式的安装文件,下载tar.gz也行的,解压后在cmd切换到解压目录,执行:python setup.py install便安装成功了。
第一次建立连接很慢很慢,慢到无法忍受,>>> test=Client(‘http://localhost:7789/SOAP/?wsdl&#8217;),不知道是怎么回事。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:利用soaplib搭建webservice详细步骤和实例代码
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址