HTTPConnection发出DELETE请求:505响应



令人沮丧的是,我需要在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?还是我做错了什么?

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

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

import requests
requests.delete(url)

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

import sys
requests.delete(url, config=dict(verbose=sys.stderr))

您可以使用urlib2:

req = urllib2.Request(query_url)
req.get_method = lambda: 'DELETE'   # creates the delete method
url = urllib2.urlopen(req)
httplib使用HTTP/1.1(请参阅HTTPConnection.putRequest方法文档)。

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

相关内容

  • 没有找到相关文章

最新更新