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

时间:2020-02-07 00:26:06

标签: post python-requests

我正在尝试使用 Python 3.8.1 请求将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成功上传。有建议吗?

1 个答案:

答案 0 :(得分: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)
相关问题