令人沮丧的是我需要在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吗?或者我做错了什么?
答案 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以查看服务器正在使用的版本。