python 自动化接口soap协议
1.传参:参数我是按照字符串的形式传进去的,注意是三引号字符串,当时原本想的是传参的区域改变完数据直接加上三引号来拼接,结果是不行的,需要json.dumps格式就行了。
2.读文件:这个地方遇到的一个坑是自认为解析完之后就可以了,和request解析一个原理,其实这个地方同样需要json来转化。
遇到的第二个问题,接口有限制1分钟之内不能重复发送请求,所以捕捉异常之后休眠了61秒。
3.保存文件:我是做了两手准备,一份直接保存到数据库,一份保存成csv,保存数据库的时间要注意一下index=False,否则会提示list错误,即不需要把index这一列读进去。保存文件我习惯保存为csv.
4.结果通知钉钉:方便知道哪个地方报错
5.一切准备好了,我准备开始跑了,运行程序的时候在导包卡住了,查找了半天才发现和我的文件名冲突了,我起了个pandas的文件夹,我的一口老血。。。
基本上大功告成了,当时写的时候遇到一些小问题让我一个头两个大。
代码:
# -*- coding:utf-8 -*-
import requests, json, math, datetime, pandas, time
from bs4 import BeautifulSoup as bs
from pandas.io.json import json_normalize
from sqlalchemy import create_engine
from dateutil.relativedelta import relativedelta
"""body"""
def get_body(body_2):
body_1 = """
<SOAP-ENV:Envelope xmlns:SOAP-ENV="自带body网址"
xmlns:ns1="自带body网址">
<SOAP-ENV:Body>
<ns1:callService>
<paramsJson>"""
body_3 = """</paramsJson>
<userName>用户</userName>
<userPass>密码</userPass>
<service>接口</service>
</ns1:callService>
</SOAP-ENV:Body>
</SOAP-E