在Python中如何进行HTTP PUT请求?
我需要用Python通过HTTP的PUT
方法把一些数据上传到服务器。从我简单看了一下urllib2
的文档,它好像只支持HTTP的POST
方法。
有没有什么办法可以在Python中使用HTTP的PUT
方法呢?
14 个回答
47
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
246
在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像给程序设定了一些规则,只有当这些规则被满足时,程序才会做出反应。
比如说,你可以设定一个条件:如果温度超过30度,就提醒用户天气很热。这样,程序就会根据温度的变化来决定是否发出提醒。
这种根据条件来执行不同操作的方式,通常被称为“条件语句”。它帮助程序根据不同的情况做出不同的决策。
在编程中,条件语句是非常重要的,因为它让程序变得更加灵活和智能。
import urllib2
opener = urllib2.build_opener(urllib2.HTTPHandler)
request = urllib2.Request('http://example.org', data='your_put_data')
request.add_header('Content-Type', 'your/contenttype')
request.get_method = lambda: 'PUT'
url = opener.open(request)
329
我以前用过很多种Python的HTTP库,最后我选择了requests作为我的最爱。其他库的接口也还不错,但有时候写出来的代码会比简单操作需要的多几行。用requests做一个基本的PUT请求看起来是这样的:
payload = {'username': 'bob', 'email': 'bob@bob.com'}
>>> r = requests.put("http://somedomain.org/endpoint", data=payload)
然后你可以用下面的代码检查响应的状态码:
r.status_code
或者查看响应内容:
r.content
requests库有很多方便的语法和快捷方式,可以让你的编程生活更轻松。