A系统向B系统发送请求(跨系统发送请求)

方法一:requests发送get、post请求,使用urllib包
import json
import urllib
import requests

data = bytes(urllib.parse.urlencode{'hello':'world'}), encoding='utf8')
res = urllib.request.urlopen(url,params=data)
print(response.read()) 
# 第二种
# res = requests.request("get",url, params=data)
# obj = json.loads(res.content.decode())
# obj = json.loads(res.text)
方法二:web service发送请求,使用suds-jurko包

1、发送数据

url = "http://IP:PORT/*************?wsdl"
 # 获取本机名称、ip地址
hostname = socket.gethostname()
local_ip = socket.gethostbyname(hostname)
client = Client(MES_URL, faults=False, timeout=15)
# 定义Header。
# MySoapHeader需与系统B名称相同,详情看文章末
header = client.factory.create('MySoapHeader')
header.UserId = HEADER_UseID  # 用户名
header.Password = HEADER_PASSWORD  # 密码
header.Token = HEADER_TOKEN  # 令牌
header.IP = local_ip  # 本机IP
client.set_options(soapheaders=header)
# 准备接口请求报文
with open('./send_data.xml', 'r',encoding='utf-8') as f:
	data = f.read()
# Interface 为接口方法,使用自己的
result = client.service.Interface(data)
 
# 接口返回结果: (<HTTPStatus.OK: 200>, <?xml version="1.0" encoding="UTF-8" ?><RESP_PARAM><PUB_INFO><RESULT>1</RESULT><DESC>success</DESC></PUB_INFO></RESP_PARAM>)

2、B系统返回数据解析

from libs.encoder import Xml2Dict   
# 用的自己二次封装的libs下的encoder.py哦
xd = Xml2Dict()
dict_result = xd.parse(result[1])
# dict_result 结果:
# {'RESP_PARAM': {'PUB_INFO': {'RESULT': '1', 'DESC': 'success'}}}

2.1、xml转字典时bytes类型的处理

重写def _make_dict()方法,判断传入数据是否为bytes。

# 这是encoder.py中的方法
class Xml2Dict(XML2Dict):

    def _make_dict(self, tag, value, attr=None):
        """Generate a new dict with tag and value
        If attr is not None then convert tag name to @tag
        and convert tuple list to dict
        """
        if isinstance(value, bytes):
            value = value.decode("utf-8")
        ret = {tag: value}

        # Save attributes as @tag value
        if attr:
            atag = '@' + tag

            a_attr = {}
            for k, v in attr.items():
                a_attr[k] = v

            ret[atag] = a_attr
            del atag
            del a_attr 
        return ret

在这里插入图片描述

** 方法2引用来自
链接:http://blog.csdn.net/zyfdroid/article/details/106364946

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值