0

令人沮丧的是,我需要在 Python 2.6.4 上开发一些东西,并且需要向似乎只支持 http 1.1 的服务器发送删除请求。这是我的代码:

httpConnection = httplib.HTTPConnection("localhost:9080")
httpConnection.request('DELETE', remainderURL)
httpResponse = httpConnection.getresponse()

然后我得到的响应代码是:505(不支持 HTTP 版本)

我已经测试过通过 Firefox 的 RESTClient 将删除请求发送到相同的 URL,并且可以正常工作。

我不能使用 urllib2 因为它不支持 DELETE 请求。HTTPConnection 对象是否只有 http 1.0?还是我做错了什么?

4

3 回答 3

1

您可以使用urllib2

req = urllib2.Request(query_url)
req.get_method = lambda: 'DELETE'   # creates the delete method
url = urllib2.urlopen(req)
于 2014-06-19T20:22:44.103 回答
1

该类HTTPConnection始终使用 HTTP/ 1.1,505似乎表明它是无法处理 HTTP/1.1 请求的服务器。

但是,如果您需要发出DELETE请求,为什么不使用Requests 包呢?ADELETE很简单:

import requests

requests.delete(url)

这不会神奇地解决您的 HTTP 版本不匹配问题,但您可以启用详细日志记录以找出发生了什么:

import sys
requests.delete(url, config=dict(verbose=sys.stderr))
于 2012-09-10T15:00:28.007 回答
0

httplib 使用 HTTP/1.1(参见 HTTPConnection.putRequest 方法文档)。

检查 httpResponse.version 以查看服务器使用的版本。

于 2012-09-10T14:52:49.383 回答