Python HTTPConnection发出删除请求:505响应
令人沮丧的是,我需要在Python2.6.4上开发一些东西,并且需要向一个似乎只支持HTTP1.1的服务器发送一个删除请求。这是我的密码:Python HTTPConnection发出删除请求:505响应,python,http,version,httpconnection,http-status-code-505,Python,Http,Version,Httpconnection,Http Status Code 505,令人沮丧的是,我需要在Python2.6.4上开发一些东西,并且需要向一个似乎只支持HTTP1.1的服务器发送一个删除请求。这是我的密码: httpConnection = httplib.HTTPConnection("localhost:9080") httpConnection.request('DELETE', remainderURL) httpResponse = httpConnection.getresponse() 然后我得到的响应代码是:505(不支持HTTP版本) 我已经
httpConnection = httplib.HTTPConnection("localhost:9080")
httpConnection.request('DELETE', remainderURL)
httpResponse = httpConnection.getresponse()
然后我得到的响应代码是:505(不支持HTTP版本)
我已经测试过通过Firefox的RESTClient向同一个URL发送删除请求,这是有效的
我不能使用urllib2,因为它不支持删除请求。HTTPConnection对象是否仅为http 1.0?还是我做错了什么?httplib使用HTTP/1.1(请参阅HTTPConnection.putRequest方法文档)
检查httpResponse.version以查看服务器使用的版本。HTTPConnection类始终使用HTTP/1.1,并且似乎表明服务器无法处理HTTP/1.1请求 但是,如果您需要发出
DELETE
请求,为什么不使用?DELETE
非常简单:
import requests
requests.delete(url)
这不会神奇地解决您的HTTP版本不匹配问题,但您可以启用详细日志记录来了解发生了什么:
import sys
requests.delete(url, config=dict(verbose=sys.stderr))
您可以使用urllib2:
req = urllib2.Request(query_url)
req.get_method = lambda: 'DELETE' # creates the delete method
url = urllib2.urlopen(req)
默认情况下,HTTPConnection使用
HTTP/1.1
。是服务器的一个问题,因此它似乎不支持HTTP/1.1版本。谢谢,我想使用它,但这意味着我的公司将经历一个漫长的开源审批过程。这不是一个大的工具,我正在工作,只是需要做一些简单的httpinteractions@jurasic:你是说任何微不足道的外部图书馆都需要批准?我同情你的陪伴。