利用soaplib搭建webservice

來源:互聯網
上載者:User

soaplib是python的soap架構,可以用來建立webservice.soaplib這樣在這裡下載:https://github.com/volador/soaplib

裝好soaplib後建立一個test.py,建立一個webservice,實現返回兩個整數相加的和。代碼如下:

# -*- coding: cp936 -*-import soaplibfrom soaplib.core.util.wsgi_wrapper import run_twisted #發布服務from soaplib.core.server import wsgifrom 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,Stringclass C_ProbeCdrModel(ClassModel):        __namespace__ = "C_ProbeCdrModel"        Name=String        Id=Integerclass 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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.