Как исправить исключение httplib.BadStatusLine?

URL = "MY HTTP REQUEST URL"
XML = "<port>0</port>"

parameter = urllib.urlencode({'XML': XML})
response = urllib.urlopen(URL, parameter)
print response.read()


IOError: ('http protocol error', 0, 'got a bad status line', None)

Я пытаюсь отправить XML на сервер и вернуть XML. Есть ли способ исправить/проигнорировать это исключение?

Я знаю, что строка состояния пуста, что вызывает эту ошибку.


person Takkun    schedule 22.05.2012    source источник
comment
Дубликат: stackoverflow.com/q/10707959/1350899   -  person mata    schedule 23.05.2012


Ответы (1)


Попробуйте посмотреть, что на самом деле возвращает ваш сервер! Вероятно, это недопустимый ответ HTTP. Вы можете использовать что-то вроде этого для отправки необработанного http-запроса на сервер:

from socket import socket

host = 'localhost'
port = 80
path = "/your/url"
xmlmessage = "<port>0</port>"

s = socket()
s.connect((host, port))
s.send("POST %s HTTP/1.1\r\n" % path)
s.send("Host: %s\r\n" % host)
s.send("Content-Type: text/xml\r\n")
s.send("Content-Length: %d\r\n\r\n" % len(xmlmessage))
s.send(xmlmessage)
for line in s.makefile():
    print line,
s.close()

Ответ должен выглядеть примерно так:

HTTP/1.1 200 OK
<response headers>

<response body>
person mata    schedule 23.05.2012