这就是我班级的样子:
class ExtHTTPErrorProcessor (urllib2.BaseHandler):
def http_error_default(self, req, fp, code, msg, hdrs):
print code
return res
...
...
opener = urllib2.build_opener(ExtHTTPErrorProcessor())
urllib2.install_opener(opener)
urllib2.urlopen(request, data)
所有这一切都是为了处理所有错误代码。我遵循文档中的格式:http://docs.python.org/library/urllib2.html#urllib2.BaseHandler.http_error_default 当错误代码400进来时,它根本不会调用我的http_error_default,而是调用urllib2中的那个。 在http_error_default中输入文件“/usr/local/lib/python2.7/urllib2.py”,第521行 提出HTTPError(req.get_full_url(),code,msg,hdrs,fp) urllib2.HTTPError:HTTP错误400:错误请求
我尝试添加http_error_400方法,然后调用此方法,但我确实需要http_error_default。我真的需要一个默认的。
答案 0 :(得分:1)
根据this vague old thread,你必须在“Fancy”URL Opener中指定显式处理程序......我坚持使用my simple working solution。只需添加一个尝试...除了块。