Django使用spyne寫webservice


一、下載安裝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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM