0
点赞
收藏
分享

微信扫一扫

机器学习与深度学习-1-线性回归从零开始实现

惠特曼 2024-11-08 阅读 9

前言

🌟🌟本期讲解关于HTTP协议的重要的机制~~~

🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客

🔥 你的点赞就是小编不断更新的最大动力                                       

🎆那么废话不多说直接开整吧~~

目录

1.HTTP状态码

1.1引言

1.2状态码

1.3常见的状态码

2.HTTP请求构造

2.1通过第三方工具进行构造

1.PostMan的下载

2.登录PostMan 

3.创建一个http请求

2.2通过代码进行构造

1.实现初始化

 2.构造GET方法

3.构造POST方法

4.总结

2.3其他方法构造

1.form表单构造

修改上⾯的代码, 把 form 的 method 修改为 POST

2.ajax 构造

3.总结

1.HTTP状态码

1.1引言

我们在平时上网的时候,有没有过这种出现404 not found的情况,当然是存在的,但是为什么没有搜索的网页的时候,就会出现这个呢???其实这就是一个HTTP的状态码,所以接下来小编将带你解开这其中的奥秘~~

1.2状态码

状态码:所谓的状态码就是用于请求中响应的结果如何;

所有的状态码的种类:

但是这里的状态码有些不常用,所以下面小编就选择几个比较重要的给大家讲一讲

1.3常见的状态码

1.200 OK

这里表示就是访问成功了,访问顺利的;

这里我们可以在fiddler进行抓包看看:

这里表示就是访问ok了

2.404 NOT FOUND

这里表示通过URL的路径没有找到资源

假如我们随机搜索一个网址,很明显这是不存在的,那么就会出现一下:

当小编添加了后缀后,发现此时就出现了大大的404 Not Found,但是在bilibili中就能够发现出现的404就更加好看一点

 

3.403 Forbidden

这里表示就是你没有权限访问这个网页

4.405 Method Not Allowed

这里表示就是服务器允许收到GET,但是这边你发送了一个POST

5.500 Internal Server Error

这里表示就是服务器内部出现了错误,就是“挂了”

6.503 Gateway Timeout

表示访问服务器超时,要么服务器挂了,要么就是网络挂了; 

7.302 Move temporarily

表示就是重新定向,原来访问的网站A,然后自动跳转到网页B上面去了(跳转访问)

这里还有301永久重定向,主要是影响到浏览器的缓存,下次访问,直接访问这个最终的目标地址即可;

并且在响应的请求头中,这里就会设计到一个location,其中就描述了最终跳转定位的网址

总结:

学习状态码的意义

2.HTTP请求构造

2.1通过第三方工具进行构造

1.PostMan的下载

首先在网址下载PostMan,那么这里的网址就是:Download Postman | Get Started for Free

2.登录PostMan 

3.创建一个http请求

点击进入workspace然后创建一个http请求,构造界面如下所示:

然后开始构造:

在下面就可以看到服务发送给我们的响应:

2.2通过代码进行构造

1.实现初始化

这里的实现和我们之前构造tcp的请求和响应大差不差,具体代码如下伸所示:

public class HttpClient {
    private Socket socket;
    private String ip;
    private int port;

    public HttpClient(String ip,int port) throws IOException {
        this.ip=ip;
        this.port=port;
        socket=new Socket(ip,port);//建立TCP的连接
    }

 解释:

 2.构造GET方法

代码如下:

  public String get(String url) throws IOException {
        StringBuilder request=new StringBuilder();

        //进行拼接
        request.append("GET " + url + " HTTP/1.1\n");
        // 构造 header
        request.append("Host: " + ip + ":" + port + "\n");
        // 构造 空⾏
        request.append("\n");
        // 发送数据
        OutputStream outputStream = socket.getOutputStream();
        outputStream.write(request.toString().getBytes());
        // 读取响应数据
        InputStream inputStream = socket.getInputStream();
        byte[] buffer = new byte[1024 * 1024];
        int n = inputStream.read(buffer);
        return new String(buffer, 0, n, "utf-8");
    }

解释:

3.构造POST方法
public String post(String url, String body) throws IOException {
        StringBuilder request = new StringBuilder();
        // 构造⾸⾏
        request.append("POST " + url + " HTTP/1.1\n");
        // 构造 header
        request.append("Host: " + ip + ":" + port + "\n");
        request.append("Content-Length: " + body.getBytes().length + "\n");
        request.append("Content-Type: text/plain\n");
        // 构造 空⾏
        request.append("\n");
        //以及构造的正文
        request.append(body);

        //发送
        OutputStream outputStream= socket.getOutputStream();
        outputStream.write(request.toString().getBytes());

        InputStream inputStream = socket.getInputStream();
        byte[] buffer = new byte[1024 * 1024];
        int n = inputStream.read(buffer);
        return new String(buffer, 0, n, "utf-8");
    }

解释:

4.总结

上述的代码主要是使用的字符串拼接来实现的格式的构造,然后通过outputstream和inputstream来实现数据的发送以及接收,总体来说还是比较简单的;

2.3其他方法构造

这里是通过代码来进行构造的http请求,当时日常生活中还需要使用HTML/JS来进行HTTP请求的构造,这里就有两种常见前端构造的方式:

1.form表单构造

这里小编没有咋学习过前端代码,这里就稍微举个小小的例子:

<form action="http://abcdef.com/myPath" method="GET">
 <input type="text" name="userId">
 <input type="text" name="classId">
 <input type="submit" value="提交">
</form>

 解释:

修改上⾯的代码, 把 form 的 method 修改为 POST

代码如下:

<form action="http://abcdef.com/myPath" method="GET">
 <input type="text" name="userId">
 <input type="text" name="classId">
 <input type="submit" value="提交">
</form>

主要的区别:

method 从 GET 变成了 POST

数据从 query string 移动到了 body 中.

2.ajax 构造

代码如下:

<script src="https://code.jquery.com/jquery-3.6.3.min.js"></script>
<script>
 $.ajax({
 type: 'get',
 url: 'https://www.sogou.com?studentName=zhangsan',
 // 此处 success 就声明了⼀个回调函数, 就会在服务器响应返回到浏览器的时候触发该回调
 // 正是此处的 回调 体现了 "异步"
 success: function(data) {
 // data 则是响应的正⽂部分. 
 console.log("当服务器返回的响应到达浏览器之后, 浏览器触发该回调, 通知到咱们
 }
 });
 console.log("浏览器⽴即往下执⾏后续代码");
</script>

解释:

这里没有解释,小编也不知道~~~,且待小编学习完前端知识再次归来;

3.总结

小编本期主要是接着上一期进行,主要讲解了关于HTTP的状态码,以及如何进行构造HTTP的请求,主要有三个发那个面“通过第三工具postman”“java代码构造”“前端form以及ajax”,下期小编将进行HTTPS的章节,立即SSL加密机制;

🌅🌅🌅~~~~最后希望与诸君共勉,共同进步!!


💪💪💪以上就是本期内容了, 感兴趣的话,就关注小编吧。

                 😊😊  期待你的关注~~~

举报

相关推荐

0 条评论