在Python中如何进行HTTP PUT请求?

230 投票
14 回答
199460 浏览
提问于 2025-04-11 09:22

我需要用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库有很多方便的语法和快捷方式,可以让你的编程生活更轻松。

撰写回答