将curl post转换为python请求post

将curl post转换为python请求post,post,python-requests,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文件是在程序的前面创建的。文件名是使用一系列串在一起的动态创建的,包括在中间的当前日期和时间。 这就是我尝试使用Pyt

我正在尝试使用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)

我继续得到
。我可以使用curl立即成功上传。建议?

400错误表示客户端输入有问题

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

with open(path) as f:
    print(type(f))
或者确保您使用此
open(xmlfilename,'rb')读取它。read()

尝试:


我之前错过了这个。它工作得很好。非常感谢你!
.read()
追加没有工作,仍然得到400响应。昨天早些时候,我用open(xmlfilename)方法尝试了
。我再试一次。也许我写错了。
postURL = 'https://oursever.com/postHere'
postXML = {'file': open(xmlfilename, 'rb').read()}
postResult = requests.post(postURL, files=postXML)
print(postResult)