赞
踩
一、添加依赖:
- //Retrofit 网络请求
- implementation("com.squareup.retrofit2:retrofit:2.3.0")
- implementation("com.squareup.retrofit2:converter-gson:2.3.0")//json转换
二、创建单例类:
- package com.example.buju.http
-
- import okhttp3.OkHttpClient
- import retrofit2.Retrofit
- import retrofit2.converter.gson.GsonConverterFactory
- import java.util.concurrent.TimeUnit
-
- /**
- * retrofit网络请求
- * */
- object HiRetrofit {
- val client = OkHttpClient.Builder()// builder构造者设计模式
- .connectTimeout(10, TimeUnit.SECONDS)//连接超时时间
- .readTimeout(10, TimeUnit.SECONDS)// 读取超时
- .writeTimeout(10, TimeUnit.SECONDS)// 写超时
- .addInterceptor(LoggingInterceptor())// 自定义拦截器
- .build()
-
- private var retrofit:Retrofit = Retrofit.Builder() // Builder构造者设计模式
- .client(client)// 借助okhttp3创建的client
- .baseUrl("baseUrl")// 网络请求前面的公共地址
- .addConverterFactory(GsonConverterFactory.create())// 数据转换适配器
- .build()
-
- fun <T> create(clazz: Class<T>):T{
- return retrofit.create(clazz)
- }
-
- }

三、创建网络请求Api:
- package com.example.buju.http
-
- import retrofit2.Call
- import retrofit2.http.GET
- import retrofit2.http.Query
-
- /**
- * retrofit网络请求定义Api
- * */
- interface ApiService {
- // 根据用户id查询信息
- @GET(value = "user/query")
- fun queryUser(@Query(value="userId",encoded = true) userId:String):Call<HashMap<String,String>>
- }
使用:
- val apiService:ApiService = HiRetrofit.create(ApiService::class.java)
- apiService.queryUser("0001").enqueue(object:Callback<HashMap<String,String>>{
- override fun onResponse(
- call: Call<HashMap<String, String>>,
- response: Response<HashMap<String, String>>
- ) {
- Log.e("Retrofit",response.body()?.toString() ?:"不知道原因")
- }
-
- override fun onFailure(call: Call<HashMap<String, String>>, t: Throwable) {
- Log.e("Retrofit",t.message?:"不知道原因")
- }
- })
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。