我需要在python中使用HTTP PUT上传一些数据到服务器。从我对urllib2文档的简要阅读来看,它只执行HTTP POST。有没有办法在python中做一个HTTP PUT ?
当前回答
您可以使用请求库,与采用urllib2方法相比,它简化了很多事情。首先从pip安装它:
pip install requests
更多关于安装请求的信息。
然后设置put请求:
import requests
import json
url = 'https://api.github.com/some/endpoint'
payload = {'some': 'data'}
# Create your header as required
headers = {"content-type": "application/json", "Authorization": "<auth-key>" }
r = requests.put(url, data=json.dumps(payload), headers=headers)
请参阅请求库的快速入门。我认为这比urllib2简单得多,但确实需要安装和导入这个额外的包。
其他回答
你看过put.py吗?我以前用过。你也可以用urllib修改你自己的请求。
您应该看看httplib模块。它应该允许您发出任何类型的HTTP请求。
Httplib似乎是一个更干净的选择。
import httplib
connection = httplib.HTTPConnection('1.2.3.4:1234')
body_content = 'BODY CONTENT GOES HERE'
connection.request('PUT', '/url/path/to/put/to', body_content)
result = connection.getresponse()
# Now result.status and result.reason contains interesting stuff
您可以使用请求库,与采用urllib2方法相比,它简化了很多事情。首先从pip安装它:
pip install requests
更多关于安装请求的信息。
然后设置put请求:
import requests
import json
url = 'https://api.github.com/some/endpoint'
payload = {'some': 'data'}
# Create your header as required
headers = {"content-type": "application/json", "Authorization": "<auth-key>" }
r = requests.put(url, data=json.dumps(payload), headers=headers)
请参阅请求库的快速入门。我认为这比urllib2简单得多,但确实需要安装和导入这个额外的包。
在过去,我使用过各种python HTTP库,我最喜欢的是请求。现有的库具有非常有用的接口,但是对于简单的操作来说,代码可能会太长。请求中的基本PUT如下所示:
payload = {'username': 'bob', 'email': 'bob@bob.com'}
>>> r = requests.put("http://somedomain.org/endpoint", data=payload)
然后,您可以使用以下命令检查响应状态代码:
r.status_code
或者这样回答:
r.content
请求有很多语法糖和快捷方式,会让你的生活更容易。
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录