使用Python的post请求请求lib返回状态405

时间:2017-07-17 12:08:59

标签: python post python-requests

我正在使用Python中的请求lib将文件上传到服务器。我阅读了它的文档和一些stackoverflow问题并实现了以下代码:

url = "http://example.com/file.csv"
id = "user-id"
password = "password"
headers = {'content-type': 'application/x-www-form-urlencoded'}

with open(file_path, 'rb') as f:
    response = requests.post(url=url, files={'file':f}, auth=HTTPBasicAuth(username=id, password=password),headers=headers)

但是这段代码不起作用,response.status_code返回405,response.reason返回Method Not Allowed。当我在终端上使用curl命令上传文件时,它工作正常,文件上传:

curl -u user-id:password -T file/path/on/local/machine/file.csv "http://example.com/file.csv"

有人可以在这里帮忙。

1 个答案:

答案 0 :(得分:2)

相关问题here。实际上,curl --upload-file执行PUT而不是POST。如果你想模仿curl的作用,你可能想尝试:

with open(file_path, 'rb') as f:
    response = requests.put(url=url, files={'file':f}, auth=HTTPBasicAuth(username=id, password=password), headers=headers)