HTTPConnection发出DELETE请求:505响应

时间:2012-09-10 14:47:12

标签: python http version httpconnection http-status-code-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吗?或者我做错了什么?

3 个答案:

答案 0 :(得分:1)

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

但是,如果您需要提出DELETE个请求,为什么不使用Requests package呢? DELETE就像:

一样简单
import requests

requests.delete(url)

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

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

答案 1 :(得分:1)

您可以使用 urllib2

req = urllib2.Request(query_url)
req.get_method = lambda: 'DELETE'   # creates the delete method
url = urllib2.urlopen(req)          # deletes database item

答案 2 :(得分:0)

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

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