HTTPConnection для выполнения запроса DELETE: 505 ответ
К сожалению, мне нужно что-то разрабатывать на Python 2.6.4, и мне нужно отправить запрос на удаление на сервер, который поддерживает только http 1.1. Вот мой код:
httpConnection = httplib.HTTPConnection("localhost:9080")
httpConnection.request('DELETE', remainderURL)
httpResponse = httpConnection.getresponse()
Затем я получу код ответа: 505 (версия HTTP не поддерживается)
Я протестировал отправку запроса на удаление через RESTClient Firefox на тот же URL, и это работает.
Я не могу использовать urllib2, потому что он не поддерживает запрос DELETE. Является ли объект HTTPConnection только http 1.0? Или я что-то не так делаю?
3 ответа
Вы можете использовать urllib2:
req = urllib2.Request(query_url)
req.get_method = lambda: 'DELETE' # creates the delete method
url = urllib2.urlopen(req) # deletes database item
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))
httplib использует HTTP/1.1 (см. документацию по методу HTTPConnection.putRequest).
Проверьте httpResponse.version, чтобы увидеть, какую версию использует сервер.