00:00
下面呢,我们来说明一下第13个特性,叫全新的HTP客户端的API。啊,这呢相当于是Java Java呢在第九个版本当中提供了一个新的API啊,来实现呢,对服务器端的请求和响应,啊对应的我们的官方的feature呢,是对应在110这个GP上。首先呢,我们对HTTP呢进行一个简单的回顾。HTTP呢,简称呢是呃,全称呢是超文本传输协议。啊呃,我们目前呢,使用比较多的呢,都是九九年发布的呢,叫HTTP1.1。啊,那在2015年的时候呢,呃,又发布了HTTP2.0,或者说呢,叫二这样一个版本。那这里呢,也是一个比较常见的一个面试题啊,就会问大家说HTPP1.1和HTTP2,它的主要区别在哪里。啊,这儿呢,我们给大家也写了一些啊,说它两个的主要区别呢,是在于客户端和服务器之间啊,构建和传输数据啊有区别。
01:07
那1.1呢,呃,依赖于请求和响应的周期。啊,而HTTP2啊,它允许服务器呢push数据。啊,就相当于呢,他可以发送呢,比客户端请求更多的数据给我们的客户端。啊,这就使得呢,它可以优先处理并发送对于首先加载网页至关重要的一些数据。啊,这呢,就是他们二者的一个区别。啊,那对于我们JAVA9来讲呢,诶,我们这儿呢,提供了一个新的一篇叫做http client。啊,那这个htp client呢,它是支持HTTP2这样的一个协议的啊,同时呢,它也支持web socket。啊,那我们这里的http client呢,它呢是用于我们跟服务器之间进行请求响应做交互的,它呢可以用来替代我们之前呢使用的一个比较基本的一个类叫做http URL connection。
02:04
啊,是这样的。啊,这里边儿呢,我们可以说一个小插曲。小插曲啊呃,在安卓的开发当中,那当时呢,呃讲这个联网的时候啊,一方面呢,可以用最基本的叫做http URL connection,然后同时呢,也可以使用http client。但是当时的http client呢,并不在我们Java的这个API当中,因为我们看到了酒才引入了HTP啊,当时我们用的是阿帕旗下的开源的炸包当中的这样一个类。啊,同时呢,我们还可以使用第三方的一些框架啊,比如说wally啊,比如说这个KHTP等等啊,实现了联网数据。啊的一个请求和响应,那针对于他两个来讲,一个呢叫做http ul connection,一个呢是http client。啊,那在这个安卓4.0的时候啊,或者叫4.0之前,他们两个呢都可以用,当然你要是用htp plan的话呢,需要导入阿巴奇这样的一个炸包啊,那在4.0以后的话呢,这个官方呢,就开始建议什么呢,说建议呢不要使用http client,说它的效率呢,没有http URL connection高。
03:18
哎,是这样的一个情况,那我们现在看到呢,在我们扎VA9当中呢,它自己呢,提供了一个类啊,当然这个类呢,虽然说跟阿尔法旗下的一个类名是一样的,但是呢,它是两个API。啊,这里呢,我们建议使用http client,让他呢再去替换,哎,咱们之前提供的htp u connection啊,而安卓里边这个用的呢,其实就是啊JDK里的,现在呢,相当于是用它来替换它。啊,那这两个API到底里边有多少的内容相似和不同,大家呢?有兴趣的话可以拿到阿帕旗下的htp client源码和我们http client Java当中的源码,大家对比一下,肯定是不同的啊,只不过这里的比较巧合的呢,是名字一样。
04:03
啊,相当于谷歌呢,告诉我们这个不用了,然后用它,而我们这个Java当中呢,相当于我们就用它,不用它名字是一样的啊,但实际上呢,是两个东西。好,这个大家呢了解一下,那下边的话呢,我们就可以举一个例子啊,然后呢,让大家来呃接触一下http client,好这个例子的话呢,不太难啊,我这呢就直接把这个代码呢粘过来给大家做一个演示啊就可以了。好,那我们就在JAVA9当中啊,这个JAVA1这个包下,我们去新建一个class,哎,不妨呢,就叫做http client的一个test。好,这呢,我们写一个main方法,哎,将我们这个代码呢,CTRLV啊粘过来,Ctrl shift的F来调下格式。好,那很显然呢,现在这里边儿有一些问题需要我们做一个导入啊,因为HD client呢,它不在我们最基本的这个,呃,这个API当中啊,我们把光标放在这al enter一下。
05:04
诶,大家看到呢,这里边并没有给我们提示呢,去添加这个model的依赖啊,而是让我们去创建相关的类,这显然呢是不合适的,按正常来讲呢,我现在把光标放在这奥特特就应该能出来。啊,说明呢,我们这个,嗯,Idea的话呢,优化的还不是特别好啊,嗯,这个像IDEA2017年的一月份这个版本,嗯,用这个叉VA9的话呢,就问题更多了啊,这个三月份版本呢,还要好一些。那这时候呢,既然没有,那我们就需要显示的呢,去导入一下,但是呢,我们是不是也不知道这块应该怎么去写呀。嗯,像刚才要有提示,我们直接可以导进来,咱们也不知道,那怎么办呢。有一个办法。啊,当然这个办法呢,不是让你去百度啊,嗯,给大家发的这个资料里边,咱们呢,一开始也提到了说这个API啊,打开dock,然后呢双击。
06:01
诶这呢,就是咱们JAVA9的这个API,然后呢,大家在这个位置呢,可以去做一个搜索,诶搜索的话呢,咱们就搜一下啊说HTTP,诶client。好,大家看我们呢,就找到这个module了啊,这呢就是我们要导入的这个module OK,那再回过来啊,在咱们的这个module info里面。哎,Request,然后JDK点二啊,哎,就是我们第一个。哎,好了,然后呢,我们再回来。那这就OK了。那这呢,相当于是它有异常啊,我们out来做异常的一个处理,这开始。啊,这个相应的这个数据呢,我们也都给他拿到这个TRY当中。哎,这个呢,也不妨都给他拿过来。好了,呃,这个时候呢,我们简单看一下这个代码啊,首先的话呢,我们通过htp client这个类呢,调它的一个静态方法,创建一个http client的一个对象。啊,这是这个情况,然后呢,我们去创建一个请求,请求我们请求谁呢?进请求一下,上微谷的这个官网啊CTRLC,我们现在这个网页这块呢,浏览器中测试一下。
07:11
哎,没有问题啊,是可以连接的好,然后呢,我们是通过get请求做的一个请求,然后的话呢,我们下边通过这个client去发送一个请求啊,获取这个响应啊,得到响应对象以后,我们获取响应码,获取响应所对应的这个,呃,协议的这个版本名,获取我们的响应体。啊,这个大家呢,做过开发的应该都比较清楚这样的基本内容啊,比较简单,我这呢就没有写这个代码,然后呢,我们点右键执行。哎,稍等一下啊,因为我们这呢需要连接这个服务器啊,好,这时候呢,这个数据已经过来了,我们看一下最初的首先呢,我们获取响应码毫无疑问呢是200,因为咱们下边这个数据呢,都已经拿到了啊,然后呢,我们当前这个使用的协议呢,是HTTP1.1。
08:03
哎,有同学可能会想,诶,怎么不是HTTP2呢?啊,这个咱们现在用的呢,就是HTTP1.1,只是说呢,我们http client呢,它是支持2.0的啊是这个意思啊,然后后边的话呢,咱们的这个boarding啊,就是请求以后我们这个响应得到的一个响应题,就是我们整个的这个网页的这个数据。啊这呢就不多说了,好这个大家呢,就知道我们这时候呢,多了一个跟诶服务器进行交互的一个新的API,叫做http client啊以后呢,大家可以用它呢来去替换httpr connection啊这呢我标识一下啊在JDK9中。哎,使用啊http client去替换啊原有的啊http URL connection。哎,保存一下好这就可以了。
我来说两句