使用retrofit进行网络请求

一、需求
访问网络接口获取星座数据
二、网络框架

一个基于 OkHttp 的 RESTful API 请求工具
Retrofit 在使用时其实就充当了一个适配器(Adapter)的角色,主要是将一个 Java 接口翻译成一个 HTTP 请求对象,然后用 OkHttp 去发送这个请求
核心思想:动态代理—通俗来讲,就是你要执行某个操作的前后需要增加一些操作,比如查看用户个人信息前需要判断用户是否登录,用户访问数据库后想清除用户的访问记录等操作

三、实现步骤
1.确定网络的url接口

const val LAUNCH_URL = "http://域名:端口号/"

2.访问接口将访问得到的数据复制下来,按快捷键Alt+K
将复制的内容转化成ConstellationLuck
这是用了JsonToKotlinClass插件,将Json生对应的Bean

data class ConstellationLuck(
    var astrology: String = " ",
    var color: String = " ",
    var day: String = " ",
    var desc: String = " ",
    var health: Double = 0.0,
    var love: Double = 0.0,
    var match: String = " ",
    var money: Double = 0.0,
    var number: Int = 0,
    var synthetical: Double = 0.0,
    var work: Double = 0.0
)

3.写这个类的接口

interface LaunchService {
      @GET("v1/xxx/detail")
    suspend fun getTodayDetail(
        @Query("consName") consName:String,
        @Query("type") type:String
    ): ApiResult<ConstellationLuck>

    @GET("v1/xxx/detail")
    suspend fun getWeekDetail(
        @Query("consName") consName: String,
        @Query("type") type:String
 ):ApiResult<MutableList<ConstellationWeekLuck>>
}

4.通过Retrofit来请求接口
这是在继承Application类中的onCreate方法中写的

ScaffoldConfig.getInstance(this)
    .setBaseUrl(LAUNCH_URL)
    .debug(BuildConfig.DEBUG)

接下来就是在需要的活动中请求

private val service by lazy {
ScaffoldConfig.getRepositoryManager().obtainRetrofitService(LaunchService::class.java)
}

launch {
    if (data != null) {
        val todayConstellation = service.getTodayDetail(data as String, "today")
        if (todayConstellation.status == STATUS_OK) {
            constellationLuck = todayConstellation.data!!
            Timber.d("99999-=====$constellationLuck")
            //将拿到的数据constellation传给数组
            setTodayValue(constellationLuck)
            if (dayLuckList.size != 0) {
                dayLuckList.clear()
            }
            initDayLuck()
            initLuckRecyclerViewAdapter()
            setOtherContext()
        }else{
            Timber.d("today网络出错了2,55555")
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值