我需要在python中使用HTTP PUT上传一些数据到服务器。从我对urllib2文档的简要阅读来看,它只执行HTTP POST。有没有办法在python中做一个HTTP PUT ?
当前回答
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
其他回答
这在python3中做得更好,并在stdlib文档中进行了记录
urllib.request.Request类获得一个方法=…参数。
一些示例用法:
req = urllib.request.Request('https://example.com/', data=b'DATA!', method='PUT')
urllib.request.urlopen(req)
我还推荐Joe Gregario编写的httplib2。我经常使用这个而不是标准库中的httplib。
一个更合适的处理请求的方法是:
import requests
payload = {'username': 'bob', 'email': 'bob@bob.com'}
try:
response = requests.put(url="http://somedomain.org/endpoint", data=payload)
response.raise_for_status()
except requests.exceptions.RequestException as e:
print(e)
raise
如果HTTP PUT请求中出现错误,将引发异常。
你可以使用requests.request
import requests
url = "https://www.example/com/some/url/"
payload="{\"param1\": 1, \"param1\": 2}"
headers = {
'Authorization': '....',
'Content-Type': 'application/json'
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.text)
你看过put.py吗?我以前用过。你也可以用urllib修改你自己的请求。
推荐文章
- 如何检查一个对象是否是python中的生成器对象?
- 如何从Python包内读取(静态)文件?
- 我需要HTTP GET请求的内容类型报头吗?
- 如何计算一个逻辑sigmoid函数在Python?
- python: SyntaxError: EOL扫描字符串文字
- Pipenv:命令未找到
- 根据Pandas中的另一列提取列值
- virtualenv和pyenv是什么关系?
- 如何正确地设置和拆除带有测试的pytest类?
- 为什么我得到“Pickle - EOFError: run out of input”读取一个空文件?
- 替换pandas数据框架中的列值
- random.seed():它做什么?
- 如何使用PyCharm中安装的包?
- 我如何得到一个Flask请求的url的不同部分?
- 弗拉斯克什么时候应该。G被使用?