retrofit + rxjava

“com.squareup.retrofit2:retrofit:2.9.0”,
“com.squareup.retrofit2:adapter-rxjava2:2.9.0”,
“com.squareup.retrofit2:converter-gson:2.9.0”,

“io.reactivex.rxjava2:rxjava:2.2.21”,
“io.reactivex.rxjava2:rxandroid:2.1.1”,
接口请求应用

 class SearchResultModel: BaseViewModel2() {
    private val baseUrl = "https://apis.tianapi.com/"
    fun requestScenicSpotData(
            context: Context,
            word: String,
            iRequestOilPriceCallback: IRequestScenicSpotCallback
    ){
        Retrofit.Builder()
                .baseUrl(baseUrl)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build()
                .create(BeanDataService::class.java)
                .requestScenicSpot(ScenicSpotKeyUtil.key,word)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(object : Observer<ScenicSpotRequestBean> {
                    override fun onSubscribe(d: Disposable) {

                    }

                    override fun onError(e: Throwable) {
                        e.printStackTrace()
                        iRequestOilPriceCallback.fail(
                                context.resources.getString(R.string.request_fail))
                    }

                    override fun onComplete() {

                    }

                    override fun onNext(scenicSpotRequestBean: ScenicSpotRequestBean) {
                        if (scenicSpotRequestBean.code == 200){
                            scenicSpotRequestBean.result?.list?.let {
                                iRequestOilPriceCallback.success(it)
                            }
                        }else {
                            iRequestOilPriceCallback.fail(
                                    context.resources.getString(R.string.request_fail))
                        }
                    }

                })
    }

    interface IRequestScenicSpotCallback{
        fun success(list: List<ScenicSpotBean>)
        fun fail(msg: String)
    }
}
interface BeanDataService {
    @GET("scenic/index")
    fun requestScenicSpot(
            @Query("key") key: String?, @Query("word") word: String?, @Query("num") num: Int = 15
    ): Observable<ScenicSpotRequestBean>
}

接口字符串:

{
  "code": 200,
  "msg": "success",
  "result": {
    "list": [
      {
        "name": "上海城市规划展示馆",
        "content": "上海城市规划展示馆位于市政府大厦的东侧,馆顶4只象征上海市市花白玉兰的巨大白色钢帽在艳阳下熠熠生辉,她与西侧水晶宫般的上海大剧院一左一右相映成趣。总投资2.6亿元的城市规划展示馆主体高43.3米,地面5层,地下2层,总建筑面积18393平方米。城市规划展示馆不仅有利于市民参观了解城市的发展变化和未来规划,更有利于向国内外宾客介绍上海城市规划与建设的情况,树立上海对外开放的国际大都市形象。",
        "province": "上海",
        "city": "上海"
      }
    ]
  }
}

设置实体:

class ScenicSpotRequestBean {
    var code: Int = 0
    var msg: String = ""
    var result: ResultObject? = null

    class ResultObject{
        var list: List<ScenicSpotBean>? = null
    }
}
class ScenicSpotBean {
    private var name: String = ""
    private var content: String = ""
    private var province: String = ""
    private var city: String = ""

    fun getName(): String {
        return name
    }

    fun setName(name: String) {
        this.name = name
    }

    fun getContent(): String {
        return content
    }

    fun setContent(content: String) {
        this.content = content
    }

    fun getProvince(): String {
        return province
    }

    fun setProvince(province: String) {
        this.province = province
    }

    fun getCity(): String {
        return city
    }

    fun setCity(city: String) {
        this.city = city
    }

    override fun toString(): String {
        return "{" +
                "name='" + name + '\'' +
                ", content='" + content + '\'' +
                ", province='" + province + '\'' +
                ", city='" + city + '\'' +
                '}'
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值