开发者学堂课程【2020版大数据实战项目之DMP广告系统(第六阶段):商圈库-Http-Okhttp的使用和封装】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/681/detail/11826
商圈库-Http-Okhttp的使用和封装
一、OkHttp 的使用
1.导入 Maven 依赖(使用之前必须先倒入Http)
< dependency >
< groupId > com . squareup . okhttp
З</ groupId >
< artifactId > okhttp </ artifactId >
< version >3.14.2</ version >
</ dependency >
我们先复制,打开idr把依赖加进来。等待 test 下创建一个新的 Http。我们要给两个方法。第一个方法叫做 Http,第二个叫做 json。一个测试 Http 一个测试 Json
接下来就可以使用 Http 了,我们在使用 Http 的时候需要把 Httpclient 创建出来,一般情况下创建在 let 层级下,一般有一个就行
所以我们拿到这个 client 就创建出来了。然后我们先拿到一个 URL val ,拷贝一下
请求,构建一个 request,Http 的过程分两步,第一步是请求,第二步是响应,所以我们必须构建一个 request ,导入 newBuilder,然后制定一个 .Ur<url>, 然后指定 .method, 给定一个get,然后构建 build。最后 client 发送请求,创建一个新的请求,一般是同步的,然后就可以获得相应的结果
一般会对结果进行一个相应的IF判断,它是否是一个成功的请求
如果成功就如图所示,然后运行
这时我们拿到结果,然后它的请求是 OK 的,这时我们的请求就发送出去了。发送出去以后我们应该创建一个新的 Scala Class 叫做 HttpUtils 作为工具类,让它作为一个对象 object
获取到结果大致如图所示,但是我们在确定完URL之后增加几个步骤。在Test中拷贝有一个url
这时我们把它稍微拆分,以问号为分割,问号左边是我们要请求的 URL ,右边是参数
拆分后如图,我们有两个参数一个是K,一个是 location ,谁调用这个方法谁就应该告诉我这个经纬度。所以要把经纬度传进来
修改后如图,如果要使用字符串里的参数,应该加一个 S
接下来应该建立一个配置文件,这个配置文件,我们就暂且叫做
“?Key=bec6562dc27d1762044c1b20cc56327e&location=$longitude,39.990464
39.990464是纬度,为 $latitude,为参数传进来的。但是 key 不应该用外面传,建立一个配置文件,命名为 common.conf,明明第一个配置
Amap key
“bec6562dc27d1762044c1b20cc56327”
参数组织完,URL 发生变化,有必要将 URL 存到配置文件中,存储进来,命名为amap.baseurl ,也是一个字符串,拷贝进来。接下来 private val baseUrl 这样的属性,对应的是 String 类型,$引用一下外部的 baseURL。
三个参数确定了,从配置文件中读出baseurl,加载配置文件。
Private val confing-configFactory.new.load(resourcebasename=”
common”)
,key也要取出来。
Private val key
:string-config.getString(“amap key)
发送请求,进行try。接下来,直接Catch,要这个请求这种场景下做重试不是特别的安全,因为你在这儿重试的话可能会让整体的性能变得很差,所以呢,我们不从事了,如果他有错的话,那么提示一下就可以了,Kiss1 对应 Exception。
那这个 Exception,最终还是要进行一个打印的 Print,第一步发送请求,要先进行请求拿到一个 Request,有一个 Request 中的 QS 加 Builder。指定 URL,然后build。创建出来这个 Request 以后,就可以发送请求来获取结果。
穿件一个新的工具 client,获取结果。Newcall(request),execute执行拿到response,判断 response
首先,把这个 Request 传进来,执行完以后,我们可以拿到一个 with boss 拿到这个 Response 以后,判断这个Response。Its successful,如果他是成功,也就是返回码,在200到这个299之间都可以都算成功.
接下就可以去获取其中的结果,结果可以通过这个 Response.Body.Train。获取到以后就会给外面了。
结果应该改变,方法的结果返回一个字符串。出现报错是因为有if,走到if里面有结果,外面没有结果。不成功的时候如果报错了,务必保证必须有结果,所以要加一个Else,那当然那这个Else可以返回一个空。
如果要表达的是就是有可能有结果,也有可能没有结果的话,那么应该写上 Option。返回的结果是一个 String 类型的。我们就可以命名为叫做 resultt,返回Some ,里面是 Result。如果没有结果的话,就应该返回 none。同理这个地方,应该返回 none,而不只是打印。
这时,这一段代码才算真正地写完。
这个视频当中介绍了两个知识点 。第一个是 OK http 怎么使用,第二个这个工具类怎么进行封装。内容比较多,希望可以消化一下。