【HTTP】构造HTTP请求和状态码

简介: 【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 请求。比较经典的方式有:

  1. form 表单
  2. ajax


相关文章
|
JSON 监控 API
掌握使用 requests 库发送各种 HTTP 请求和处理 API 响应
本课程全面讲解了使用 Python 的 requests 库进行 API 请求与响应处理,内容涵盖环境搭建、GET 与 POST 请求、参数传递、错误处理、请求头设置及实战项目开发。通过实例教学,学员可掌握基础到高级技巧,并完成天气查询应用等实际项目,适合初学者快速上手网络编程与 API 调用。
1188 130
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
956 2
|
JSON JavaScript API
Python模拟HTTP请求实现APP自动签到
Python模拟HTTP请求实现APP自动签到
|
数据采集 JSON Go
Go语言实战案例:实现HTTP客户端请求并解析响应
本文是 Go 网络与并发实战系列的第 2 篇,详细介绍如何使用 Go 构建 HTTP 客户端,涵盖请求发送、响应解析、错误处理、Header 与 Body 提取等流程,并通过实战代码演示如何并发请求多个 URL,适合希望掌握 Go 网络编程基础的开发者。
|
缓存 JavaScript 前端开发
Vue 3 HTTP请求封装导致响应结果无法在浏览器中获取,尽管实际请求已成功。
通过逐项检查和调试,最终可以定位问题所在,修复后便能正常在浏览器中获取响应结果。
478 0
|
Web App开发 新零售 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
1.尽可能地了解需求,系统层面适用开闭原则 2.模块化,低耦合,能快速响应变化,也可以避免一个子系统的问题波及整个大系统 3.
972 0
|
Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
Found lingering reference异常 ERROR: Found lingering reference file hdfs://jiujiang1:9000/hbase/month_hotstatic/...
910 0
|
Web App开发 存储 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
一、引言   最近在整理理大数据模式下的数据仓库数据模型,资料来自互联网和读过的数据仓库理论和实践相关。 二、3NF (1)1NF-无重复的列   数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。
975 0
|
Web App开发 前端开发 Java
|
Java
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
深度分析Java的ClassLoader机制(源码级别) 写在前面:Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中,JVM在加载类的时候,都是通过ClassLoader的loadClass()方法来加载class的,loadClass使用双亲委派模式。
1292 0

热门文章

最新文章