首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么Python: requests.post会导致406错误

为什么Python: requests.post会导致406错误
EN

Stack Overflow用户
提问于 2020-12-12 12:16:38
回答 3查看 80关注 0票数 1

我可能太老了,做不了这个,但我正在努力学习Python。我是狂欢派对的老顽固。

作为练习,我尝试用Python重写bash脚本。脚本所做的其中一件事就是使用curl将文件上传到web主机。这很简单:

代码语言:javascript
运行
复制
curl -n -T $file $host

这就是我在Python中尝试的:

代码语言:javascript
运行
复制
import requests
filename='/Users/mnewman/Desktop/myports.txt'
user='username'
password='password'
myurl='https://www.example.com/public_html/'
r=requests.post(url=myurl, data={},  files={'filename': open('/Users/mnewman/Desktop/myports.txt', 'rb')}, auth=(user, password))
print(r.status_code)
print(r.headers)

下面是返回的内容:

代码语言:javascript
运行
复制
406
{'Date': 'Sat, 12 Dec 2020 03:52:17 GMT', 'Server': 'Apache', 'Content-Length': '226', 'Keep-Alive': 'timeout=5, max=75', 'Connection': 'Keep-Alive', 'Content-Type': 'text/html; charset=iso-8859-1'}

我做错了什么?打字错误?无知?

EN

回答 3

Stack Overflow用户

发布于 2020-12-12 12:23:00

为什么open(文件名)包含在单引号中?它应该是这样的:

代码语言:javascript
运行
复制
 f = open(filename,'rb')

上载文件时,文件应为二进制格式

票数 2
EN

Stack Overflow用户

发布于 2020-12-12 12:30:12

有两件事你应该检查一下。

首先,文件内容应该以rb格式打开。

其次,我还假设文件的JSON值的键可能不是filename,而是'filename'

代码语言:javascript
运行
复制
import requests
user='username'
password='password'
myurl='http://www.example.com/public_html/'
r=requests.post(url=myurl, data={},  files={'filename': open('/Users/mnewman/Desktop/myports.txt', 'rb')}, auth=(user, password))
print(r.status_code)
print(r.headers)
票数 0
EN

Stack Overflow用户

发布于 2020-12-13 06:25:54

事实证明,406错误是由于需要一个用户代理。一旦我添加了一个用户代理,406错误就消失了。不幸的是,文件仍然不能上传。我将在这个问题上发布一个不同的问题:

代码语言:javascript
运行
复制
myurl='https://www.mgnewman.com/'
r=requests.post(url=myurl, data={}, 
    files={'file': open('/Users/mnewman/Desktop/myports.txt', 'rb')},\
    auth=(user, password), headers={"user-agent":"Mozilla/5.0 \
    (Macintosh;\ Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 \
    (KHTML, like Gecko) Version/14.0.1 Safari/605.1.15"}) 
print(r.status_code)
print(r.headers)

以下是响应:

代码语言:javascript
运行
复制
200
{'Date': 'Sat, 12 Dec 2020 22:08:54 GMT', 'Server': 'Apache', 'Upgrade': 
'h2,h2c', 'Connection': 'Upgrade, Keep-Alive', 'Last-Modified': 'Sun, 30 Aug
 2020 23:31:39 GMT', 'Accept-Ranges': 'bytes', 'Vary': 'Accept-Encoding', 
'Content-Encoding': 'gzip', 'Content-Length': '1227', 'Keep-Alive': 
'timeout=5, max=75', 'Content-Type': 'text/html'}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65261543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档