一、下載安裝spyne
pip install spyne
二、
使用Django創建一個新的項目和app
urls
url(r'^information/', views.information_app),
views
#-*- coding: utf-8 -*- from django.shortcuts import render,HttpResponse # import logging # logging.basicConfig(level=logging.DEBUG) #from spyne import Application, rpc, ServiceBase,Integer, Unicode from spyne import Application,rpc,ServiceBase,Iterable,Integer,Unicode from spyne.protocol.soap import Soap11 from spyne.server.wsgi import WsgiApplication from spyne import Iterable from spyne.protocol.xml import XmlDocument # from spyne.protocol.json import JsonDocument from spyne.server.django import DjangoApplication from django.views.decorators.csrf import csrf_exempt import json from referral_service_app import models from xml.etree import ElementTree class HelloWorldService(ServiceBase): @rpc(Unicode, _returns=Iterable(Unicode)) def ess_information(ctx, data): dic = {"a":1,"b":2} return HttpResponse(json.dumps(dic)) application = Application([HelloWorldService], tns='spyne.examples.hello', in_protocol=Soap11(validator='lxml'), out_protocol=Soap11() ) # This module resides in a package in your Django # project. information_app = csrf_exempt(DjangoApplication(application))
解釋
@rpc(Unicode, Integer, _returns=Iterable(Unicode)) #如果上面在增加一個Integer,說明傳入的第二個參數數組
def ess_information(ctx, data,num): #傳入的參數也需要變成兩個
測試請求,我們使用suds來測試
安裝suds模塊
pip install suds
測試代碼
#-*- coding: utf-8 -*- from suds.client import Client import traceback ip = "127.0.0.1" port = "8000" client = Client("http://%s:%s/information/?wsdl"%(ip, port)) #你請求的url data = "HelloWord" try: result = client.service.ess_information(data) print result except: traceback.print_exc()
如果像上面改成兩個參數,則請求時也需要兩個參數
result = client.service.ess_information(data,3)