令人沮丧的是,我需要在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)
检查httpResponse.version以查看服务器使用的版本。