【HTTP】构造HTTP请求和状态码
状态码
用于响应中,表示响应的结果如何
- 正确?
- 错误?什么原因?
HTTP
中的状态码都是标准约定好的
200 OK
成功了,一切顺利
- 在抓包到的响应中
404 Not Found
访问的资源(URL
中的路径)没找到
403 Forbidden
请求的资源没有权限访问
- 例如:查看码云的私有仓库,如果不登陆,就会出现
403
学习状态妈的意义,就是为了能够更好的调试问题。咱们在自己写服务器的时候,最好能够按照人家状态码的含义来正确使用
405 Method Not Allowed
你的服务器只支持 GET
请求,但是你发了个 POST
(后续学到 Spring 的时候,尤其是对于初学者来说,是很容易遇到这类问题的)
500 Internal Server Error
服务器内部错误(服务器挂了),在外面的网站是很难遇到的,咱们自己写的服务器就很容易遇到的
- 有些服务器确实挂了,访问的时候也是可能会出现 500 的(概率不高,也是有可能会遇到的)
504 Gateway Timeout
访问服务器超时
- 可能是服务器挂了
- 也可能是网挂了
302 Move temporarily
重定向(临时重定向)
明明是访问的网站 A,A 告诉你说去找 B,浏览器就会自动取访问 B
在陈奕迅的《爱情转移》中,有一句歌词“把一个人的温暖,转移到另一个的胸膛”
有一个域名:aaa.vip.com
,用了一段时间之后,要改名字了。重新申请域名:bbb.vip.vom
。修改域名之后,很多的老用户仍然会尝试使用旧的域名进行访问。为了不让老用户的使用不受到影响,就可以把访问老域名的请求重定向到新域名上
- 类似于手机的“呼叫转移”
301 Move Permanently
301
,永久重定向302
,临时重定向
会影响浏览器的缓存。如果是永久重定向,浏览器就会把重定向的结果记录下来,后续再进行访问,就直接访问重定向的目标地址即可,不必多一次跳转了;如果是临时重定向,就不太方便
Location
在这种重定向报文的响应中,会有一个特殊的 header
叫做 Location
。其描述了要重定向到的目标的地址在哪
- 描述了重定向是要跳转到哪里
状态码小结
如何构造出 HTTP 请求
通过第三方工具构造
构造 HTTP 请求的第三方工具:PostMan,经典的,广泛使用的工具
- 每个标签页,就是一个构造 HTTP 请求的配置页面
postman
还有一个很厉害的一点,它是个有对象的软件—— postwoman
通过代码构造
任何一种编程语言,只要能够操作网络,都可以构造 HTTP
请求
对于 Java
来说,需要使用 ServerSocket/Socket
(TCP
的 Socket API
来编程),本质上就是基于 Socket
写一个 TCP
的客户端,然后往 Socket
中按照 HTTP
协议的格式写入字符串即可
实际开发中,都是有一些第三方库,封装好了上述操作,不需要手动写 Socket
,OkHttpClient
(比较知名的 Java
的 HTTP
客户端库)。
如果后续确实要用到 OkHttpClient
,代码不知道怎么写,可以使用 postman
里面的生成代码的功能
- 在
postman
中把要构造的请求配置好,postman
就能自动生成出对应的代码来
日常开发中,还会涉及到网页中构造 HTTP
请求(特别常见的情况),需要通过 HTML/JS
来构造出 HTTP
请求。比较经典的方式有:
form
表单ajax