1.什么是webservice?
https://www.jianshu.com/p/5bb727b434e6
2.python如何生成webservice客户端?
spyne官网 http://spyne.io/#inprot=HttpRpc&outprot=JsonDocument&s=rpc&tpt=WsgiApplication&validator=true
使用dajngo+spyne创建客户端:
# view
from django.views.decorators.csrf import csrf_exempt
from spyne import Application, rpc, ServiceBase, Unicode
from spyne.protocol.soap import Soap11, Soap12
from spyne.server.django import DjangoApplication
TNS = "http://adc.siinterface.com/" # 暂时没有发现有任何实质性作用
# 定义一个class类用于之后渲染至django的url
class SIInterfaceForADC(ServiceBase):
# rpc 为装饰器用于接收参数 _returns 之前的为接收参数,可以为多个, _returns = 返回参数
@rpc(Unicode,Unicode, _returns=Unicode)
# 函数方法,request为接收的参数,如果@rpc中为多个,request也相对应为多个
def addUserInfo(self, request,request1):
# 代码逻辑
return 'addUserInfo'
@rpc(Unicode, _returns=Unicode)
def delUser(self, request):
return 'delUser'
@rpc(Unicode, _returns=Unicode)
def modifyUserInfo(self, request):
return 'modifyUserInfo'
"""
Application = spyne内置函数,用于将上面定义的类分发起来
SIInterfaceForADC = 定义的类
tns = 代码头定义的tns(暂时没发现实质性作用)
name = 给该类命名
in_protocol = 输入的数据 Soap12 = soap协议,可以为Soap11 validator = 数据类型(一般为lxml)
out_protocol = 输出的数据
"""
application = Application([SIInterfaceForADC],tns=TNS,
name="SIInterfaceForADC",
in_protocol=Soap12(validator='lxml'),
out_protocol=Soap12())
# si_service_app = 将spyne渲染至django的url
si_service_app = csrf_exempt(DjangoApplication(application))
# url
from django.conf.urls import url
from django.contrib import admin
import views
urlpatterns = [
# si_service_app 为views对应的分发数据
url(r'^information/', views.si_service_app),
]
启动djgnao之后可以进行查看
url之后需要添加/?wsdl
使用suds进行webservice接口测试
from suds.client import Client
# 传入的数据
add_xml = 'haha'
# 链接该webservice地址
client = Client("http://127.0.0.1:8000/information/?wsdl")
# addUserInfo = 客户端内定义的函数
result = client.service.addUserInfo(upd_xml)
print(result)