【问题标题】:python: printing information about BadStatusLine errorpython:打印有关 BadStatusLine 错误的信息
【发布时间】:2014-12-26 16:51:30
【问题描述】:

执行以下 python 脚本后,我得到了一个 BadStatusLine。如何打印有关 BadStatusLine 的详细信息?

#!/usr/bin/python

import urllib
import urllib2
import httplib


try:
    # NoActiveDevsPerQtr
    request = urllib2.Request('http://127.0.0.1:8090')

    request.add_header('Accept',        'text/csv')
    request.add_header('User-Agent',    'python-script')

    request.add_data("""
        <? xml version="1.0"?>
        <log_query>
            <querytype>ListPerQtr</querytype>
            <year>2014</year>
            <quarter>3</quarter>
        </log_query>
    """)


    response = urllib2.urlopen(request)
    content  = response.read()
    print content

except httplib.BadStatusLine as e:
    print e

print e 什么都不打印。

根据要求,当我删除 except httplib.BadStatusLine 时引发的实际错误如下:

Traceback (most recent call last):
File "./IQueryTests.py", line 25, in <module>
response = urllib2.urlopen(request)
File "/usr/lib64/python2.6/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib64/python2.6/urllib2.py", line 391, in open
response = self._open(req, data)
File "/usr/lib64/python2.6/urllib2.py", line 409, in _open
'_open', req)
File "/usr/lib64/python2.6/urllib2.py", line 369, in _call_chain
result = func(*args)
File "/usr/lib64/python2.6/urllib2.py", line 1190, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib64/python2.6/urllib2.py", line 1163, in do_open
r = h.getresponse()
File "/usr/lib64/python2.6/httplib.py", line 990, in getresponse
response.begin()
File "/usr/lib64/python2.6/httplib.py", line 391, in begin
version, status, reason = self._read_status()
File "/usr/lib64/python2.6/httplib.py", line 355, in _read_status
raise BadStatusLine(line)
httplib.BadStatusLine

【问题讨论】:

  • 你能显示实际抛出的错误吗?
  • 可能dupe?

标签: python httplib


【解决方案1】:

来源('httplib.py')在一个引发 'BadStatusLine' 的情况下这样说:

        if not line:
        # Presumably, the server closed the connection before
        # sending a valid response.
        raise BadStatusLine(line)

也许您遇到这种情况,暗示该行为空或空。

来源: https://hg.python.org/cpython/file/2.7/Lib/httplib.py

这看起来像是一个累了的程序员决定;最好定义另一个异常,例如“NoStatusLine”

【讨论】:

  • 当前(截至 2019 年 9 月)版本的 http.client 现在会在状态行格式无效时引发 BadStatusLine。它希望看到 HTTP/&lt;version&gt; &lt;3-digit-status&gt; [&lt;optional-reason-string&gt;] 如果没有收到状态行,它现在会引发 RemoteDisconnected 并显示消息“远程结束关闭连接而没有响应”
猜你喜欢
  • 1970-01-01
  • 2016-08-07
  • 2012-02-02
  • 2016-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多