根据the urllib2 documentation的说法,
因为默认处理程序处理重定向( 300范围内的代码),而100-299范围内的代码表示成功,所以您通常只会看到400-599范围内的错误代码。
然而,下面的代码
request = urllib2.Request(url, data, headers)
response = urllib2.urlopen(request)
引发代码为201的HTTPError (已创建):
ERROR 2011-08-11 20:40:17,318 __init__.py:463] HTTP Error 201: Created
那么,为什么 urllib2
会在这个成功的请求上抛出HTTPErrors呢?
这并不是很麻烦;我可以很容易地将代码扩展为:
try:
request = urllib2.Request(url, data, headers)
response = urllib2.urlopen(request)
except HTTPError, e:
if e.code == 201:
# success! :)
else:
# fail! :(
else:
# when will this happen...?
但根据文档和我找不到关于这种奇怪行为的类似问题的事实,这似乎不是预期的行为。
还有, else
块应该期待什么?如果成功的状态码都被解释为HTTPError
,那么urllib2.urlopen()
什么时候会像所有urllib2
文档中提到的那样返回一个正常的类似文件的响应对象?
https://stackoverflow.com/questions/7032890
复制相似问题