美文网首页
Kevin Learn Kotlin:网络编程(retrofit

Kevin Learn Kotlin:网络编程(retrofit

作者: Kevin_小飞象 | 来源:发表于2021-12-17 10:43 被阅读0次
10.jpg

retrofit

32.png

Retrofit 是一个基于 okhttp 的 RESTful 网络请求框架,功能强大、简洁易用及高扩展性。

注解

Retrofit 注解驱动型上层网络请求框架,使用注解来简化请求,大体分为以下几类:

  • 用于标注网络请求方式的注解


    image.png
  • 标记网络请求参数的注解


    image.png
    image.png
  • 用于标记网络请求和响应格式的注解


    image.png

开始使用

  1. 添加依赖:
implementation 'com.squareup.retrofit2:retrofit:2.6.1'
implementation 'com.squareup.retrofit2:converter-gson:2.6.1'
  1. 初始化
/**
 * Created on 2021/12/16 16:46
 *
 * @author Gong Youqiang
 */
object RetrofitHelper {
    private const val BASE_URL = "http://10.0.2.2/"
    private val client = OkHttpClient.Builder()
        .connectTimeout(10, TimeUnit.SECONDS)
        .readTimeout(10,TimeUnit.SECONDS)
        .writeTimeout(10,TimeUnit.SECONDS)
        .build()

    private var retrofit:Retrofit = Retrofit.Builder()
        .client(client)
        .baseUrl(BASE_URL)
        .addConverterFactory(GsonConverterFactory.create())  // 数据转换适配器
        .build()

    fun <T> create(clazz : Class<T>): T {
        return retrofit.create(clazz)
    }
}
  1. 接口方法
/**
 * Created on 2021/12/17 9:32
 *
 * @author Gong Youqiang
 */
interface ApiService {
    @GET(value = "user/query")
    fun queryUser(@Query(value = "userId",encoded = true) userId : String):Call<String>
}
  1. 使用
RetrofitHelper.create(ApiService::class.java)
            .queryUser("1600932269")
            .enqueue(object :Callback<UserBean>{
                override fun onResponse(call: Call<UserBean>, response: Response<UserBean>) {
                    Log.e(TAG, response.body()?.toString()?:"not data" )
                }

                override fun onFailure(call: Call<UserBean>, t: Throwable) {
                    Log.e(TAG, t.message?:"unknown reason" )
                }

            })

相关文章

网友评论

      本文标题:Kevin Learn Kotlin:网络编程(retrofit

      本文链接:https://www.haomeiwen.com/subject/gbgmfrtx.html