python: 打印BadStatusLine错误信息

0 投票
1 回答
2479 浏览
提问于 2025-04-30 15:43

我在运行以下的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
暂无标签

1 个回答

2

这个源代码文件('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',会更好。

撰写回答