00:00
下面我们来学习Java,当JAVA11当中HTTP的一个客户端,它的使用,那么JAVA9当中其实已经开始引入了,但是没有正式的启用,那么在JAVA11当中它就是一个正式的可用的状态,那么我们可以在java.net包东包当中找着这个API,首先我们来看一下它要涉及到有哪些个类,哪些个类,首先http request是什么呀?啊,是个请求,请求,那么请求是什么呢?哎,我要向谁请求,请求的方式什么是get呢?还是post啊,然后呢,请求的这个这个内容是什么?这些都是需要,呃,提供的好,然后呢,还需要一个客户端,诶,Http client它是不是最核心的好,然后呢,这个客户端。
01:00
需要干什么?调用方法send发送,发送什么呀?发送请求,哎,所以send方法需要一个请求,同时它还需要一个什么呀?哎,需要一个处理器来处理器,那么最终会有一个http htp response回应来响应,好然后呢,这样的话我们就完成一个啊这样的一个演示,首先我们说要想和我HTTP服务器打交道,那你得有HTTP服务器,我们作为客户端是不是才能连啊,好,那么这个服务器我这已经,哎用一个简单的tomca搭了一个服务器,然后呢,我们的web content当中是有一个index.html这个文件,我打开以后啊,它是一些个内容,那么这些个内容我就可以在通过客户端去访问这个他get的服务器的时候,把这个内容是不是就显示出来啊,好,然后呢,我们来输入一下HT。
02:00
DP,诶然后呢,IP地址是本机的127.0.0.1,然后端口默认8080斜杠,然后下面是test应用,然后呢,我去直接访问,访问应用跟目录,诶我能够拿到它的内容,那么这是通过浏览器这个客户端来去做的,好那么我们把这个地址是不是可以复制一下来做我们的客户端也是一定要需要的,好那么这是这个服务器这备好了,我们来客户端来测试一下,好新建一个TC,那http client测试好,然后呢,写个测试方法来测一下,那么我们说在这个服务器和客户端的这样一个交互当中,谁是最重要的呀,服务器已经启动了,诶客户端http client客户端,那么这个。
03:00
客户端能new吗?哎,我new一个HT,看能不能new呢?同学们能不能new啊?哎,我发现好像不能new,因为它是构造,其实protected不能扭,那么怎么办呢?哎,注意我们不能扭,那怎么办?哎,我就需要找它的静态方法,好,我们来点一下,通过类去点它的静态方法有没有啊?哎,有直接是不是就有个new http client好,那么它就可以直接创建一个新的客户端,那么客户端好了,来吧,我就可以工作了,那么我的工作也很简单,就是发送一个请求,Send,发送个什么请求啊,HTTP请求好,那么这个send的方法,它就是发送请求的。诶这下面还有两个和它非常像的,注意了,这两个方法,这个加了这个an s这个后缀的,它是一个异步的,那么sand呢是。
04:00
步的,同步的是会阻塞,而异步呢不会阻塞,那么我们简单测试先用同步的,那么这个方法先简单一点好,Send send是s send一个request对象,然后呢,在send一个第二个参数是response body handler,它是干什么的?哦,它是一个从服务器反馈回来这个内容的一个处理器,Request,什么是请求?诶,你这个客户端知不知道向谁请求,不知道,那么这个请求其实通过request对象体现出来,你要向谁请求,请求什么内容,你怎么请求,是get请求呢?Post请求等等这一系列信息都封装在request对象当中。当我们把这个request提交给服务器的时候,服务器就要有回应,那么回应以后,回应回应回来的这个数据该怎么处理呢?哎,我们就需要一个handler处理器,哎,那么这个处理的过程非常像我们之前学习的DB us,还有印象吗?哎,我们用这个query方法去查询一个结果集的时候,诶,那么它就需要一个result set handleler结果集处理器,那么它是类似的,哎,类似的好,那么这个request显然需要,那我们就先背一下吧,Http request,哎,Request,好,那么这个request能用吗?
05:26
应该不能扭,我这就直接放弃了,哎,那么不能扭,我要找静态方法,能不能找找找静态方法呀。哎,没有直接new request,但是有new,什么new builder new builder行不行啊,行啊,因builder是构建者,创建者,那么它和这个工厂模式,哎,它就是就是这种工厂模式,那么这个new build的时候有两种,一种是无餐的,另外一种呢,传UI,那么显然我们用的应该用哪种啊?哎,传参的,传参的是方便啊好,给我一个请求,诶UI请求好,然后传进来以后呢,注意这是个build,诶等会儿现在光传它还行吗?不行,因为它需要的是uri对象,而我们这是字符串,那么字符串怎么变成uri对象呢?
06:14
怎么变?哎,注意UI,显然我们要找它的静态方法,诶,Create create创建,创建啥呀,根据字符串的内容创建一个uri对象,然后呢,我再把这个U对象作为参数去告诉他创建一个builder,这个builder是不是request,不是builder是创建器,创建器那么这个构建器,然后再去build是不是才能拿到这个request,好了,Request拿到以后,我们看来看第二个就是response body handler,哎,这是一个什么东西啊?哎,这是一个response response body handler。I body handler,或者我们称为body body handler I body handler好,那么这是个body handler,那么这个body handler是一个,哎,是一个处理器,好注意处理器,那么这个处理器我怎么能new吗?应该是不能扭,并且我们发现这个body handleler它是隶属于谁啊哦,它是response这个类的一个内部类哦,它是接口,是接口当中的一个内部类,哎,内部内部接内部类好那么这是这个啊内部类,那么显然我们说它这个里面哦,它有一个body handler,注意我们看到S的时候,通常会想到它是工具方法,诶工具方法那我们是不是就可以用啊,注意它叫什么来着,叫body body handlers工具方法,我们来看一下有没有方法能够产生body handler啊,有没有啊。
07:57
哎,有,那么我们说在这里最简单的就是把这个body直接给我变成什么字符串,大家看五四直接就是什么。
08:09
把这个body内容作为字符串,注意它返回的是什么body handler,好那么这个方法是不是就可以了?好,那么既然是above string,那么所以它的泛型是什么?就是string,哎,就是string好了,然后注意我们这send完成以后,山send完成以后,然后呢,它会返回一个哎,Response对象,哎,Response对象,好那么这个response对象。它是不是就是回应了,哎回应,那么这个response怎么处理的,是不是有处理器处理好,那么我们调用它的方法body不是就能拿到它的body了体,那么这个体就是什么呢?就是这个返回来的内容,诶打印输出一下这个body,诶打印输出保底好,然后呢,我们来运行这个程序,运行好,那么运行完以后,诶我们发现我们就把这个内容给他拿到了,当然这个拿到的内容是怎么生变成字符串的呢?哎,显然在这里这个body handlers它会处理,哎它会处理,它会产生一个自动产生一个。
09:26
产生一个什么?向硬体的处理器处理成什么呢?处理成字符串啊,那么这是这个http client它的一个,哎,简单的使用来使用客户端,好,那么我们刚才试的是同步的,那么来看一下异步的,那么异步的方法非常简单,换一下,比如我们在这儿换一下叫send什么好点,加上后缀,哎,加上后缀E步的,还有异步的好方法名变一下就可以了。
10:02
好编一下就可以好,然后呢。啊,注意他这时候他拿到的是不是直接就是http response对象啊,哎,不是了,为什么?因为它是异步的,这个方法调用以后,哎它会异步,也就是这个方法调用完成以后,方法立即返回,而不像这个同步的,同步的在send的时候,它要阻塞阻塞处,直到回馈回来以后,我处理完它才结束,而我们这个异步的呢?哎,它返回的是一个什么future,哎,Future什么是future啊,哎,Future就是一个接口,哎它是一个异步的,那么我们可以通过这个异步的对象进一步是不是来获取它的内容啊,来获取内容好,然后呢,我们来看send这个异步的对象,我们来如何获取啊,哎,我们来看get方法,Get方法是不就能拿到啊,啊get get拿到的是一个什么呀?拿到的是一个,这时候是不才是response啊好response然后呢。
11:05
我再从response,诶get,诶response.body好拿到它的一个HTML题,哎,响应题好,那么这是注意字字符串啊,Body好,注意这是异步的,哎,异步的好,那么异步的好处是什么呢?哎,异步的好处就是它可以在send完成以后,马上紧接着是不是就可以做别的事情啊哎,我们这儿又直接又去get了,所以其实效果和这个同步的是一样的,当然我们可以使用另外一个线程,是不是让它去get去啊,哎,所以这样的话更加的方便,哎,更加方便好那么这是这个同步以及异步的这样一个HTTP客户端的一个例子啊,那么通过这个例子我们发现HTTP这个编写啊变得非常的简单,这样的话我们就不需要再依赖第三方的一些个类库来完成。
12:05
相应的功能好,那么这是HTTP它里面的内容。
我来说两句