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