当XML大小增加时,Python请求XML API异常ConnectionError:(“Connection aborted.”,BadStatusLine(“”,“,))

2024-09-29 04:26:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用一个xmlapi。当我使用小XML负载时,它工作得很好。在

代码在下面

import requests

xml = """<?xml version="1.0" encoding="ISO-8859-1"?>
     <!DOCTYPE MESSAGE SYSTEM "http://127.0.0.1:80/psms/dtd/messagev12.dtd">
     <MESSAGE VER="1.2">
     <USER USERNAME="xxxxx" PASSWORD="xxxx" />
     <CONTENT  UDH="0" CODING="1" TEXT="SAMPLE" PROPERTY="0" ID="1" TEMPLATE="">
     <ADDRESS FROM="XXXX" TO="XXXXXXXXXX" SEQ="0" TAG="test"/>
     ......
     ......
     </CONTENT>
     </MESSAGE>"""

     payload = {'data'   : xml,'action'   : 'send'}
     headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.0; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0',
               'Content-Type': 'application/xml'}
     response =  requests.post(url, params = payload, headers=headers)
     print response.status_code
     print response.content

当XML变得更大并且有更多的数据时,就会引发异常

^{pr2}$

在有效负载XML大小很小之前,它工作得非常好。但是这个API经过验证,在单个XML中最多可以使用5k个条目。在


Tags: 代码importmessageversionresponsexmlcontentrequests
1条回答
网友
1楼 · 发布于 2024-09-29 04:26:52

在尝试了各种选择后发现了问题和解决办法。在

由于XML在请求中作为参数提供,所以它将URL编码到URL中。所以当大量的XML数据被传递时,URL的长度超过了限制。在

所以把params改成data也改成了content类型

payload = {'data'   : xml,'action'   : 'send'}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.0; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0',
           'Content-Type': 'application/application/x-www-form-urlencoded'}
response =  requests.post(url, data = payload, headers=headers)

相关问题 更多 >