Retrofit学习
Retrofit学习
可能第一次学习的时候不够充分了解,因此今天再来重新捋捋Retrofit这个Android网络组件如何使用。部分内容参考了一下博客和官网。
简介
Retrofit框架是一个网络请求框架,该框架的实质还是通过OkHttp的形式进行网络的访问,对于Retrofit部分,仅仅是把你所需要的东西封装成了一个网络请求接口的类型。
使用该框架的时候,需要gradle进行导包:
implementation ("com.squareup.retrofit2:retrofit:2.9.0")
implementation("com.squareup.okhttp3:okhttp:4.9.0")
因为retrofit内部是使用okhttp框架的,所以除了添加retrofit依赖以外,还需要添加okhttp框架的依赖。
最简单的一个使用方法,创建一个小按钮,然后需要实现的功能就是点击这个按钮后,能够进行访问https://baidu.com/
这个网站,并且进行获取这个网页的内容。
然后使用Retrofit来写代码
接口部分
interface IRemoteDemo {
@GET("")
fun getResponse(): Call<ResponseBody>
}
按钮中的操作内容
val retrofit: Retrofit = Retrofit.Builder()
.baseUrl("https://www.baidu.com/") //设定基本的url
.build()
val iRemoteDemo: IRemoteDemo =retrofit.create(IRemoteDemo::class.java)
val call=iRemoteDemo.getResponse()
call.enqueue(object : Callback<ResponseBody> {
override fun onResponse(
call: Call<ResponseBody>,
response: retrofit2.Response<ResponseBody>
) {
Log.d("retrofitdemotag","${response.body()?.string()}")
}
override fun onFailure(call: Call<ResponseBody>, t: Throwable) {
Log.d("retrofitdemotag","${t.printStackTrace()}")
}
})
分析
接口部分写了一个函数,需要获取返回值的内容,然后是使用对应的get方法的。然后在按钮部分中,声明了对应的一个retrofit类,然后用该类去查u你更加爱你一个call实例,最后用call实例执行enqueue方法去进行网络的访问与返回。
在创建retrofit中,使用的是Retrofit.Builder进行创建的,需要制定其基本的url。
retrofit这个组件,会把一个请求api的链接分成两部分,一部分是baseurl,另一部分是除去baseurl中的后半部分。比如请求一个url=
http:192.168.0.100:8080/web_demo/userServlet
,那么baseurl就是http:192.168.0.100:8080/web_demo/
这部分,后半部分就是userServlet
。
如果在baseurl中并没有以/
为结尾的,那么在interface中的@GET中或者其他的标注中必须使用/
作为开头,否则就会抛出异常。
使用GSON进行转换
如果使用了JSON进行文件的传送,那么可能会使用到GSON这个组件。使用组件需要进行导包:
implementation ("com.google.code.gson:gson:2.8.7")
implementation ("com.squareup.retrofit2:converter-gson:2.9.0")
在retrofit中使用Gson比较简单,在创建的时候进行创建就行,定义好一个写好的类,然后在创建retrofit时进行添加ConverterFactory即可:
val retrofit:Retrofit=Retrofit.Builder()
.baseUrl("https://www.baidu.com") //设定基本的url
.addConverterFactory(GsonConverterFactory.create())
.build()
Gson这个组件比较简单,该组件时Google公司开发的,主要的作用是把json字段转换成对应的类,或者把对应的类转换成json字段,然后通过文字的形式往网络上进行传送。