zoukankan      html  css  js  c++  java
  • python post请求,text/xml 格式

     最近接触到一个post请求,发送报文是 以xml格式的。如下:

     准备用Python + Requests库来进行接口的代码自动化。 记录下 过程。

    首先,postman请求,用fidder抓包,确定下请求报文:

     

    看下请求报文具体。复制下,使用fiddler的 composer ,请求方式post,请求地址输入,下面Request Body 中粘贴复制的请求报文,点击execute,执行。执行成功,成功返回报文

     

     2. 使用python代码

     xml 格式的直接放置body,字符串承接,每一行最后增加换行符,requests 的post请求,用data 来接。进行请求。即可请求成功。

    (如果失败,post请求data的body进行一下utf-8转换。 re = requests.post(url=url,data=body.encoding("utf-8"))   )

    代码如下:

    url = "http://xx.xx.xx.xxx:xxxxx/xxxxxx/Cmis2YcloansHttpChannel"
    body = 'XXXXX;calculateService;'
    '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'
    '<msgbody>'
    '<reqId>reqID</reqId>'
    '<reqTime>2019-08-19 17:16:15.123</reqTime>'
    '<serviceId>calculateService</serviceId>'
    '<channelId>YouZan</channelId>'
    '<subChannelId></subChannelId>'
    '<source></source>'
    '<ip>127.0.0.1</ip>'
    '<version></version>'
    '<BCH_CDE>branch_code</BCH_CDE>'
    '<loanNo>50000320120198253002</loanNo>'
    '<setlValDt>2020-12-08</setlValDt>'
    '<actvPayAmt>45.22</actvPayAmt>'
    '<trialDt>2020-12-08</trialDt>'
    '<paymMode>AT</paymMode>'
    '</msgbody>'
    re = requests.post(url=url,data=body)
    print(re.text)

    再当前文件中请求成功。

    3.xml报文放置xml文件中,读取xml文件
    一般请求报文放置 XML 文件中,pycharm 中新增xml 文件。文件中将xml请求报文放置。如下:

     当前请求中,使用Open函数读取xml文件内容,请求代码

     参考代码:

    url = "http://xx.xx.xx.xxx:xxxxx/xxxxxx/Cmis2YcloansHttpChannel"
    headers = {'Content-Type':'application/xml'}
    with open('youzanLoanTrial.xml',encoding='utf-8') as fp:
    body1 = fp.read()

    re = requests.post(url=url,headers=headers,data=body1)
    print(re.text)

     代码成功运行,运行结果如下:

     这是request请求,第四种比较常用的请求方式。

    {'Content-Type': 'application/json'},
    {'Content-Type': 'application/x-www-form-urlencoded'}
    {'Content-Type':'multipart/form-data}
    {'Content-Type':'text/xml}

    Requests库post请求,四种常用请求方式:application/json,application/form,multipart/form-data,text/xml 

  • 相关阅读:
    prototype.js超强的javascript类库
    MySQL Server Architecture
    Know more about RBA redo block address
    MySQL无处不在
    利用Oracle Enterprise Manager Cloud Control 12c创建DataGuard Standby
    LAMP Stack
    9i中DG remote archive可能导致Primary Database挂起
    Oracle数据库升级与补丁
    Oracle为何会发生归档日志archivelog大小远小于联机重做日志online redo log size的情况?
    Oracle Ksplice如何工作?How does Ksplice work?
  • 原文地址:https://www.cnblogs.com/MTXue/p/13925026.html
Copyright © 2011-2022 走看看