此文为学习记录所用,为加深自己的理解,会随着学习的深入而做补充.
已记录200/301/302/403/404
状态码的总结
状态码 | 定义 |
---|---|
1xx | 报告 接收到请求,继续进程 |
2xx | 成功 步骤成功接收,被理解,并被接受 |
3xx | 重定向 为了完成请求,必须采取进一步措施 |
4xx | 客户端出错 请求包括错的顺序或不能完成 |
5xx | 服务器出错 服务器无法完成显然有效的请求 |
200 OK
请求已成功,请求所希望的响应头或数据体将随此响应返回。
301 Move Permanently
Permanently Moved
是指永久性转移,即被请求的资源已永久移动到新位置;虽然使用该url依旧可以访问,但是建议使用响应返回的url作为访问地址。
302 Move temporarily
Temporarily Moved
是指暂时性转移。请求的资源临时从不同的 URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。
403 Forbidden
服务器已经理解请求,但是拒绝执行它。
404 Not Found
请求失败,请求所希望得到的资源未被在服务器上发现。
以一段代码为例:
# -*- coding: UTF-8 -*-
from urllib import request
from urllib import error
if __name__ == "__main__":
#一个不存在的连接
url = "http://rocketship.com.au/404/"
req = request.Request(url)
try:
response = request.urlopen(req)
html = response.read().decode('utf-8')
print(html)
except error.HTTPError as e:
print("HTTPError")
print(e.code)
except error.URLError as e:
print("URLError")
print(e.reason)
输出结果为:
HTTPError
404
但一个好的server,往往有很好的处理error的能力,比如baidu。在输入一个不存在的网址http://www.baidu.com/jakc_cui.html.网页的显示为:
而在python中的结果却不会报HTTPError 404。