soap python_Python:soap通信

笔者这几天被soap通信搞的死去活来

贴个soap的普及url:有兴趣的童鞋可以看下简单对象访问协议_百度百科​baike.baidu.com

笔者之前接触的都是restful接口,突然接到个需求是webservice的

不能怪我知识面窄,因为我处的时代就是restful的

'''貌似暴露了年龄[ε=ε=ε=┏(゜ロ゜;)┛逃]'''

先来说下web的接口模式

大概在几年之前restful开始流行,以前都是webservice的天下

其中,soap是webservice里一种比较流行的通信方式

怎么理解呢?

就是参数通过soap去传递

restful都是url?username="root" 这样的传参模式

而soap则很冗长

soap一般常见的是wsdl的方式进行处理,wsdl也就是定义好的的模板,百度一下基本都是这样的

然后,就因为这样,搞的笔者入坑良久才出来

因为,笔者这个接触的是没有wsdl的 (甚至就一度怀疑自己智障,为什么就response error)

举个例子:

import requests

soapmessage = ''' <?xml version="1.0" encoding="utf-8"?>

.........

'''

re = requests.post(url,soapmessage,header)

print(re.content)

第一步:

需要定义一个soap的消息告诉server你传参的是啥。

soap就已经不懂了,还得让我写个soapmessage xml格式 [日了狗了]

第二步:

常规的http请求(走post),需要注意的是header,不同的程序,需要不同的header

以上这2步是很重要的元素,少一个都无法完成,而且error贼多

笔者拿到的开发文档如下

which may be called with the SOAP or XML-RPC protocols, using HTTP (or preferably, HTTPS) as a transport layer

[大写的黑人问号]

就没有了??,是的,就没有了。这个就是我拿到的的开发文档

然后再告诉我了参数的名称。

怎么传????

传哪????

header多少???

一概不知

先说重点:

1,web日志开启debug

2,应用开启debug

3,F12

4,对比客户端访问的情况来调整sdk的访问情况

然后笔者就这样被折磨了一个5天,说说我都干了啥:

1,什么是soap

2,soapmessage怎么写

3,看程序的源码(日了狗,是perl的,是我完全不懂的perl写的,痛苦不言而喻)

4,漫长的debug路程

终于在今天,也就是20180708 (周日) 完成了第一个功能login。。。。。=。=||

我的周末呀,就这样的没了。想说:《我不是药神》真心好看

update:2018/07/09

痛苦呀,痛苦呀

完成了login之后,执行功能函数的时候又报错了 ///orz 请收下我的膝盖

Your session has expired.403

老长一段xml中就看到了error

不过有提示至少有个方向:

Your session has expired

猜测应该是check session的时候不通过

直接上解决方案吧:

在soapmessage中添加sessionid的参数,在struct中增加,因为server定义了参数需要放置在struct中方能识别

5b431493cf9e0a2effjjkl

遇到的坑:

1,在header中增加cookie (常规都是通过header增加session的,尤其是玩过爬虫的小伙伴)

2,调整函数的执行逻辑

3,撸源码(万恶的perl)

当给的回执xml又是冗长一段的时候,我的502都不够用了(502干嘛用,粘我碎掉的♥呀)

,but,我没有找到session的字眼,又看了一遍真的是没有session的字眼,好像有个ok。

定睛一看

OK200

笔者赶紧点开web,特么的居然成功了。。。。

重点:了解server端定义的soap通信方式真的很重要

就是因为手中的开发文档就特么一句话,所以导致笔者走了很长一段痛苦的弯路

#which may be called with the SOAP or XML-RPC protocols, using HTTP (or preferably, HTTPS) as a transport layer

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值