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。有什么办法可以解决/忽略此异常吗?
我知道状态行为空,这会引发此错误。
尝试看看您的服务器实际上返回了什么!它可能不是有效的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>