如何修复httplib.BadStatusLine异常?

发布于 2021-01-29 18:02:33

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。有什么办法可以解决/忽略此异常吗?

我知道状态行为空,这会引发此错误。

关注者
0
被浏览
187
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    尝试看看您的服务器实际上返回了什么!它可能不是有效的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>
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看