我们常见的API一般是restful, 但是有的时候也会遇到非restful的时候,对于Restful API, 我们很容易用python处理。SOAP API 我们如何来处理呢?

首先我们需要了解Restful API 和 SOAP API架构

The Representational State Transfer (REST)架构服务通过统一资源定位器(URL)公开。这个逻辑名称将资源的标识与所接受或返回的标识分开。

RESTful URL必须具有创建、请求、更新或删除的功能。这个动作序列通常被称为CRUD。要请求和检索资源,客户端将发出超文本传输协议(HTTP) GET请求。

就是我们常见的post, get, put,delete,head等动作。

SOAP 是基于 XML 的简易协议,是用在分散或分布的环境中交换信息的简单的协议,可使应用程序在 HTTP 之上进行信息交换。或者更简单地说:SOAP 是用于访问网络服务的协议。包括三个部分:封装定义了一个描述消息中包含什么内容以及如何处理它们的框架,编码规则用于表示应用程序定义的数据类型的实例,另外还有一个表示远程过程调用和应答的协定。

SOAP基于XML语言和XSD标准,其定义了一套编码规则,该规则定义如何将数据表示为消息,以及怎样通过HTTP协议来传输SOAP消息,它由以下四部分组成:SOAP信封(Envelope):定义了一个框架,该框架描述了消息中的内容是什么,包括消息的内容、发送者、接收者、处理者以及如何处理这些消息。

SOAP编码规则:它定义了一种系列化机制,用于交换应用程序所定义的数据类型的实例。

SOAP RPC表示:它定义了用于表示远程过程调用和应答协定。

SOAP绑定:它定义了一种使用底层传输协议来完成在节点间交换SOAP信封的约定。

SOAP消息基本上是从发送端到接收端的单向传输,它们常常结合起来执行类似于请求/应答的模式。不需要吧SOAP消息绑定到特定的协议,SOAP可以运行在任何其他传输协议(HTTP、SMTP、FTP等)上。另外,SOAP提供了标准的RPC方法来调用Web Service以请求/响应模式运行。

区别:

restful的优点:可以看作是http协议的一种直接应用,默认是基于json作为传输格式,使用简单返回格式一般为json_decode($code,$msg,$data),是对api接口的一种约定,方便调用。

restful的缺点:安全性比较低,没有得到一些语言的支持。

SOAP:是一种数据交换协议规范,是一种轻量的、简单的、基于XML的协议的规范。

优点:易用,灵活,跨语言,跨平台

restful API和SOAP,二者各有自己的使用场景。如果创建的分布式服务要求较好的安全性,对于传输等底层实现要求较强的可定制性,可以考虑SOAP;如果要求设计实现简单,一般来说安全性要求不高可以考虑REST。这只是一般情况,但偏于面向资源的服务使用REST有天然的优势。

好了,说了这么多,我们常见的WDSL格式,就是一种SOAP API格式。

一般我们用WCFstorm 来发这种svc格式的请求。我们来用WCF来发,用Fiddler来抓抓看,是什么样子。

但是我们如何来自动化操作这种请求呢?

祭出我们的大杀器,zeep.

zeep是什么呢?就是python中用来解析SOAP格式的一个插件。具体怎么用,可以去官网看看。

import zeep, 然后用client发一下就可以了。

例如:

import zeep

host = "xx"

member_id = "1145"

wsdl = 'http://{}.e.com/services/ecplatform/StudyPlanService.svc?wsdl'.format(host)

# client = zeep.Client(wsdl=wsdl, wsse=UsernameToken('SalesforceSmartUser', 'SalesforceSmartPwd'))

client = zeep.Client(wsdl=wsdl)

def join_group():

client.service.JoinGroup(studentId=member_id)

def generate_monthly_report():

client.service.UpdateMonthlyKeywordCount(studentId=member_id, cultureCode='zh-CN',

year=year,

month=month, forceSendNotification=True)

def generate_weekly_study_goal_reminder():

client.service.SendWeeklyStudyGoalReminder(studentId=member_id, cultureCode='zh-CN', forceSend=True)

def generate_this_week_study_status():

client.service.SendThisWeekStudyStatus(studentId=member_id, cultureCode='zh-CN', forceSend=True)

关键是参数如何填写,这块我弄了好久,然后在同事的帮助下搞定的。

就是调用client中service,然后调用接口的名字。

参数就是parameters中的值。

一般这种请求,发出去没有返回值。

好了,大功告成,如果你有什么问题,请私信我。

更多精彩,请关注微信公众号:python爱好部落

python发送soap报文_python处理SOAP API相关推荐

  1. python发送xml报文_python通过tcp发送xml报文的方法

    如下所示: # -*- coding: utf-8 -*- import socket # 使用tcp发送请求报文 def tcpsend(ip, port, xmlbw): address = (i ...

  2. python发送arp报文_python发送arp欺骗攻击代码分析

    代码如下: # -*- coding: cp936 -*- from scapy.all import * from threading import Thread,Lock,activeCount ...

  3. python发送soap报文_python用http发送soap报文进行webservice接口调用

    最近学习了python用http发送soap报文进行webservice接口调用,从网上找了些资料,为了方便下次温习,在此留下代码片段,也望高手指点: #!/usr/bin/env python # ...

  4. python交通调查数据处理_Python突破高德API限制爬取交通态势数据+GIS可视化(超详细)...

    一.需求: 爬取高德的交通态势API,将数据可视化为含有交通态势信息的矢量路网数据. 二.使用的工具: Python IDLE.记事本编辑器.ArcGIS 10.2.申请的高德开发者KEY(免费). ...

  5. python发送qq邮件_python使用SMTP发送qq或sina邮件

    python使用qq邮箱(个人邮箱)发送邮件需开启qq邮箱的SMTP服务 在设置中开启pop3/SMTP服务,返回的密码就是之后代码中登录使用账户密码(在完整代码中标识了出来) 之后出现如下错误 复制 ...

  6. python soap服务_python之SOAP服务—ZIPCodeWorldUSWebService

    ZIPCodeWorldUSWebService是Fraudlabs提供的一个SOAP接口,可以通过输入美国的邮政编码查找当地的相关信息 具体代码如下: import sys, urllib, str ...

  7. 基于百度地图的python开发服务端_python编程之API入门: (一)使用百度地图API查地理坐标...

    在网络编程中,我们会和API打交道.那么,什么是API?如何使用API呢?本文分享了一下我对API的理解以及百度地图API的使用. API是"Application Programming ...

  8. python发送excel文件_Python操作Excel, 开发和调用接口,发送邮件

    接口开发: importflaskimporttoolsimportjson,redisimportrandom server= flask.Flask(__name__)#新建一个服务,把当前这个p ...

  9. python连接sap接口_python中调用api接口

    CDN之API以及SDK的调用 简介 阿里云CDN提供了丰富的API接口,除了控制台,CDN还开发了多样化的接口.目前我们推荐用户使用新版API,详情请参见新版API参考.同时CDN提供了多语言SDK ...

  10. python发送cookie请求_Python中实现带Cookie的Http的Post请求

    已经实现了如何获得对应的cookie,具体参考: [已解决]Python中如何获得访问网页所返回的cookie 现在想要把已获得cookie,在http的提交post请求的时候,也同时发送过去. 即, ...

最新文章

  1. js 转义成html,js转义html,反转义
  2. 战略突破!又一国产芯片巨头即将追赶华为,成为思科的替代者?
  3. python散点图最多能画几个点_Python的散点图竟然能画这么好看
  4. gdb常用命令及参考文档
  5. FPGA时序约束和timequest timing analyzer
  6. r语言中正定矩阵由于误差不正定_R语言之数据处理(一)
  7. scheduledexecutorservice 的使用_java中ThreadPool的介绍和使用
  8. 在VC中使用Delphi构造公共对话框
  9. 基于SSM的猫头鹰物流网站
  10. MySQL基础与操作
  11. linux编写脚本的基本方法
  12. java如何快速入门Hadoop大数据技术?
  13. html语言 搜索引擎关键词 怎么写,HTML关键词
  14. 瑞安java,​温州瑞安JAVA 培训班
  15. 一种最低级的按键状态机
  16. 【机器学习】十大机器学习基础算法
  17. 三个并联电阻计算c语言,3个电阻并联怎么计算
  18. cad怎样转换成pdf格式?四个步骤完成
  19. 谷歌浏览器java不能启动_selenium+java谷歌浏览器 网站打开不正常
  20. 隆重推荐:大明王朝1566

热门文章

  1. 苹果计算机格式化磁盘,如何格式化Mac电脑硬盘_给Mac电脑格式化硬盘的方法
  2. python中的def是什么意思啊_python中的def是什么意思
  3. ubuntu下机械硬盘不能新建文件夹
  4. 2068个开源的网站模板【免费下载】
  5. 获取微信jssdk权限影响ajax,微信jssdk中请求得到access_token遇到跨域问题,改写为jsonp,报错...
  6. 何时是使用代码报表的最佳方法,何时采用frx格式
  7. 判断图同构大杀器---nauty算法
  8. cv曲线面积的意义_浅谈圆锥曲线中的高级技巧
  9. Delphi xe5 StyleBook的用法(待续)
  10. 快速集成一个视频直播功能