将curl发布转换为python请求发布

问题描述 投票:0回答:1

我正在尝试使用Python 3.8.1requests将XML文件上传到IIS服务器。我已经使用curl成功完成了多次。这有效:

curl -v -H "Content-Type: text/xml" --data-binary @MS1481_20200204_163918_4461289.xml https://oursever.com/postHere

我尝试上传的XML文件是在程序的前面创建的。文件名是使用一系列串联在一起的字符串动态创建的,包括中间的当前日期和时间。

这是我尝试使用Python上传的方式:

postURL = 'https://oursever.com/postHere'
postXML = {'file': open(xmlfilename, 'rb')}
postResult = requests.post(postURL, files=postXML)
print(postResult)

我继续得到<Response [400]>。之后,我可以立即使用curl成功上传。建议?

post python-requests
1个回答
0
投票

400错误表明您的客户端输入有问题。

是否正确打开并读取了文件?您应该使用with条件打开它,

with open(path) as f:
    print(type(f))

或确保您使用此open(xmlfilename, 'rb').read()阅读它>

尝试:

postURL = 'https://oursever.com/postHere'
postXML = {'file': open(xmlfilename, 'rb').read()}
postResult = requests.post(postURL, files=postXML)
print(postResult)
© www.soinside.com 2019 - 2024. All rights reserved.