一、下载安装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)