Kotlin_使用Retrofit和RxJava进行简单的网络请求与Gaon数据解析

《Kotlin系列》之协程搭配Retrofit+OkHttp3网络请求封装(kotlin+retrofit+okhttp3) 上一篇关于MVVM架构的基类封装,这篇会在MVVM的基础上示范使用kotlin+retrofit+okhttp封装的网络框架,里面会涉及到协程的使用,协程异常处理包装。 阅读详情

不废话直接上代码

在环境支持Kotlin的基础上添加如下依赖

    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
    compile 'com.squareup.okhttp3:okhttp:3.2.0'
    compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'

1.将请求返回的json转为bean类

         (目前AS的Gson插件无法转译为kotlin的bean类,于是先生成javabean,再用AS一键转为Kotlin)            

         转换方法:

转kotlin后得到的Bean类:

package com.demo.kotlin.kotlindemo

/**
 * Created by Administrator on 2018/5/11 0011.
 */

class CaseListBean {

    /**
     * code : 100
     * msg : 查询成功
     * data : {"count":3,"data":[{"case_id":35,"case_name":"测试案件2","addtime":"1514526115","status":7},{"case_id":31,"case_name":"测试案件","addtime":"1513936149","status":6},{"case_id":2,"case_name":"天安门房子案","addtime":"1514610028","status":6}]}
     */

    var code: Int = 0
    var msg: String? = null
    var data: DataBeanX? = null

    class DataBeanX {
        /**
         * count : 3
         * data : [{"case_id":35,"case_name":"测试案件2","addtime":"1514526115","status":7},{"case_id":31,"case_name":"测试案件","addtime":"1513936149","status":6},{"case_id":2,"case_name":"天安门房子案","addtime":"1514610028","status":6}]
         */

        var count: Int = 0
        var data: List<DataBean>? = null

        class DataBean {
            /**
             * case_id : 35
             * case_name : 测试案件2
             * addtime : 1514526115
             * status : 7
             */

            var case_id: Int = 0
            var case_name: String? = null
            var addtime: String? = null
            var status: Int = 0
        }
    }
}
2.定义接口类 APIService

    主要定义接口的请求类型,详细的请求地址,和所需的参数

interface APIService{
    //post,加在统一接口后面的详细接口
    @POST("Caseapi/caseList")
    //采用map的形式传参
    fun getIpMsgByMap(@QueryMap map: Map<String, Int>): Call<CaseListBean>

    @POST("Caseapi/caseList")
            //采用固定键值对的形式传参
    fun getIpMsgByParams(@Query ("user_id")user_id:Int,@Query ("userrole")userrole:Int,@Query ("company_id")company_id:Int): Call<CaseListBean>
}

3.在Application定义Retrofit对象并return该对象创建的service
 val retrofit: Retrofit =  Retrofit.Builder()
                .baseUrl("https://test.xj.wangshangfayuan.com/api/")
                .addConverterFactory(GsonConverterFactory.create())
                .build()
 val ipService = retrofit.create(APIService::class.java)
4.通过Application拿到service请求网络
      方式一:(map传参)
 var map = HashMap<String, Int>()
        map.put("userrole", 1)
        map.put("user_id",55)
        map.put("company_id",5)

        val retrofit: Retrofit =  Retrofit.Builder()
                .baseUrl("https://demo.wangshangfayuan.com/api/")
                .addConverterFactory(GsonConverterFactory.create())
                .build()
        val ipService = retrofit.create(APIService::class.java)


        ipService.getIpMsgByMap(map).enqueue(object: Callback<CaseListBean> {
            override fun onResponse(call: Call<CaseListBean>?, response: Response<CaseListBean>?) {
                println(response!!.body().data!!.data!!.get(0).case_name)

            }

            override fun onFailure(call: Call<CaseListBean>?, t: Throwable?) {
                println("error")
            }

        })


    方式二:固定参数传参
  ipService.getIpMsgByParams(1,28,5).enqueue(object: Callback<CaseListBean> {
            override fun onResponse(call: Call<CaseListBean>?, response: Response<CaseListBean>?) {
                println(response!!.body().data!!.count)

            }

            override fun onFailure(call: Call<CaseListBean>?, t: Throwable?) {
                println("error")
            }

        })



Kotlin + Rxjava + Retrofit 使用 首先创建个retrofit的单列 /** * Created by JokAr on 2017/6/5. */ class NetworkConfig private constructor() { private val DEFAULT_TIMEOUT: Long = 15 private val BASE_URL: String = "http://gank.io/a... 阅读详情

相关推荐

用Kotlin和RxJava 2制作的Android无效的简单EventBus-Android开发

KBus超级轻量级​​(13 LOC)和简约(post(),subscribe(),unsubscribe())用惯用的Kotlin和RxJava编写的EventBus 2 KBus,分3个步骤1.定义事件//使用数据数据类S KBus超轻量级( 13 LOC)和极简主义(post(),subscribe(),unsubscribe())用惯用的Kotlin和RxJava编写的EventBus,分3步完成2 KBus 1.定义您的事件//使用数据数据类ShowMessageEvent(val message:String)//没有数据类OtherEvent2。添加订阅者重写fun onStart(){super.onStart()KBus.subscribe (this){showMessage(it.message)} KBus.subscribe (this){doSomething()}}

在kotlin中使用retrofit+rxjava2

在kotlin中使用retrofit+rxjava2

JokAr 5386

从Gitee上部署视觉工程到Linux虚拟机

(使用SVM来识别装甲板的编号,此处手机上的图片中只有灯条没有数字,SVM无法识别出编号。这两行代码的意义是,当SVM识别不出或者识别不到编号时,把装甲板的编号默认为2号。找到自瞄程序中,数字识别类下的这两行代码,把注释去掉。这样,每次打开新的终端时,环境变量都会自动设置。(2)查看虚拟机设置选项,检查虚拟机USB接口是否为3.0及以上的接口。如果不是,要更改好。这样,每次打开新的终端时,环境变量都会自动设置。后,每次打开终端时自动设置这些环境变量,你可以将。打开第一个终端,用来挂ROS的内核启动页面。

2301_81035291的博客 1520

Android Kotlin之Retrofit、Rxjava的使用

一.Retrofit定义: Retrofit是square开源的网络Restful请求框架,底层是基于okhttp的,也就是封装okhttp的一个网络请求框架,是基于java的动态代理来实现的,开发者只要定义接口就可以了。 二.Retrofit特点: 1.底层基于okhttp 2.使用Restful设计风格 3.通过注解配置网络请求 4.支持同步、异步请求 5.支持各种数据解析...

认真做事,开心生活 2086

Surface Go 2 变身 Linux 开发本:保姆级 Ubuntu 20.04 双系统安装与驱动配置全攻略

本文详细介绍了如何将 Surface Go 2 变身为高效的 Linux 开发本,涵盖 Ubuntu 20.04 双系统安装、专用内核配置、驱动优化等全流程。通过 linux-surface 内核安装和硬件驱动优化,确保 Surface Go 2 的触控、笔输入、摄像头等功能完美运行,适合开发者打造便携生产力工具。

weixin_30596165的博客 616

基于Ardupilot/PX4固件,APM/PIXhawk硬件的VTOL垂直起降固定翼软硬件参数调试(第二篇)软硬件参数调试

基于Ardupilot/PX4固件,APM/PIXhawk硬件的VTOL垂直起降固定翼软硬件参数调试(第二篇) 本文内容大部分来自Kris,我们的K大,在VTOL领域的大牛,在此,非常感谢K大。能引用K大的成果也是自己的荣幸,不便之处还请K大多多包涵,在此引用只是为方便自己日常学习,部分参数表里根据自身情况,增加了修改环节和相应参数。 垂直起降固定翼 中文教程-参数设置 垂直起降固定翼是由 多轴+...

u011322358的博客 2万+

Retrofit 在kotlin中使用及解析

Retrofit 是建立在 OkHttp 之上的一个网络请求封装库,内部依靠 okhttp 来完成实际网络请求。Retrofit 在使用上很简洁, API 通过 interface 来声明。我只需要通过 interface 来声明 API路径、等各个配置项。

u010498248的博客 1784

Python 爬虫实战:arXiv 学术论文 PDF 批量下载(含反爬策略与文件命名规范)

arXiv 是全球最大的免费开放预印本论文平台之一,涵盖物理学、数学、计算机科学等多个学科领域。研究人员、学生和工程师常常需要批量下载论文 PDF 进行文献综述、构建机器学习数据集或进行文本挖掘研究。然而,手动逐篇下载论文效率低下,因此开发一个自动化批量下载工具显得尤为重要。

yansideyucsdn的博客 1817

初学Kotlin MVP+Retofit2+Rxjava2

kotlin项目 需要配置 build.gradle 如下:apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions'android { compileSdkVersion 26 buildToolsVersion "

a1989214的博客 1392

多模态大模型在AI人工智能领域的创新实践探索

随着人工智能技术的飞速发展,单一模态的数据处理已经难以满足复杂现实场景的需求。多模态大模型通过融合多种模态的数据,如文本、图像、音频等,能够更全面、深入地理解和处理信息,为人工智能的发展带来了新的机遇和挑战。本文的目的在于深入探讨多模态大模型在AI人工智能领域的创新实践,包括其核心概念、算法原理、实际应用等方面,旨在为相关领域的研究人员和从业者提供全面的技术参考和实践指导。本文的范围涵盖了多模态大模型的基本原理、算法实现、数学模型、项目实战以及实际应用场景等多个方面。

大模型应用工坊 1316

【云原生技术】云计算与网络:容器服务(Tencent Kubernetes Engine,简称TKE)简介

基本概念主要特点应用场景技术实现容器服务(Tencent Kubernetes Engine,简称TKE)是腾讯云提供的一种托管的容器管理服务,基于开源的Kubernetes系统。TKE旨在简化容器的部署、管理和扩展,并且提供高性能、可靠性和安全性,适用于各种规模的企业和应用。

weixin_46453070的博客 2043

网络请求框架Retrofit基本使用(Kotlin)

前几天了介绍了 Kotlin的基本使用和基类封装、MVVM和DataBinding LiveData二次封装、Kotlin中使用简单 Android项目以依赖的形式使用 小狗蛋:以上基本就能实现一个完整的项目了 慕容海柱:感觉少点啥 小狗蛋:还少啥,够用了 慕容海柱:那你网络请求用啥?OKHTTP吗?感觉不搭啊 小狗蛋:行叭,那咱用Retrofit 慕容海柱:咋用? 小狗蛋:走着 首先导入依赖,如何自己写一个依赖看上面 有请求也把解析搞里头! implementation 'com.squareup

As_thin的博客 3451

基于MATLAB的逐次变分模态分解(SVMD)算法详解

本文详细介绍了基于MATLAB的逐次变分模态分解(SVMD)算法。SVMD是一种改进的变分模态分解方法,通过逐次分解机制克服传统VMD算法需要预设模态数量的缺陷。文章从信号分解方法的发展历程入手,阐述了SVMD的核心优势与创新点,包括参数敏感性降低、自适应分解能力和更好的频率分离性能。详细解析了SVMD的数学模型和优化求解过程,重点讨论了变分问题构建、ADMM优化方法和停止准则设计。通过MATLAB代码实现展示了SVMD的具体应用,包括参数初始化、信号预处理、模态提取和残余信号更新等关键步骤。

qq_42212808的博客 130

RxJava 现学现用上(操作符)

RxJava是一个在Android中非常流行的框架,作为Android开发者对它都不陌生,本文将从是什么到它的应用场景来了解一下这个框架。 RxJava是什么 RxJava是基于事件流的异步操作库。 RxJava的作用 RxJava的作用类似于Android中的Handler、AsyncTask,帮助我们优雅的实现异步任务。 RxJava的原理 RxJava主要有三个要素,被观察者(Observable)、观察者(Observer)、事件(Event),它是一种扩展的...

DDUP的博客 325

DDR5 的 PI: DIMM 上 PMIC,正在制造一批“新型 EMI 问题”

DDR5 的 PI,不再只是“供电设计”,而是一次“噪声管理设计”。电压稳定本地调节高频噪声EMI 风险系统不确定性DDR5 真正难的地方,不是跑起来,而是——在最差条件下,它还能不能一直跑。而 DIMM 上那颗 PMIC,正是你绕不开的关键角色。

weixin_43199439的博客 181

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

响应式编程需要的三个框架:RxJava2、RxAndroid、RxLifecycle(Kotlin)

RxJava在处理异步逻辑时,非常方便、强大,真正的响应式编程。 本文记录了RxJava各个操作符的基本使用。

Alpinist Wang 2930

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Kotlin+Retrofit+Dagger2+Rxjava

1

hukou6335490的博客 652

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Kotlin+RxJava+Retrofit2的简单Demo

所有的代码都写在一个文件内了代码中所导入的包,请务必注意不要导错了,不然运行会导致报错代码如下:import retrofit2.Call import retrofit2.Response import retrofit2.Retrofit import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory import retrofit2.conve

iGoogle.ink 2315

Android-MVP-Dagger-Retrofit-Rxjava-Okhttp

Android-MVP-Dagger-Retrofit-Rxjava-Okhttp主要技术点 MVP Dagger2依赖注入 Rxjava + Retrofit + Okhttp 封装网络请求 ; Glide加载图片 此项目谨供学习参考使用,喜欢的同学可以关注下,谢谢!如有不正确的地方还望指出! github下载地址 1.配置环境先看一下结构目录 “`

Happy 727

Rxjava+retrofit2+OKHttp+GSON实践

Rxjava+retrofit2+OKHttp+GSON实践网络请求1 添加配置文件//retrofit compile 'com.squareup.retrofit2:retrofit:2.1.0' //Gson converter compile 'com.squareup.retrofit2:converter-gson:2.1.0' //RxJava2 Adapter compile 'co

5ingwings(SiHao)的博客 7308

Android版&Kotlin版RxJava2+Retrofit2+OkHttp3的基础、封装和项目中的使用

在技术领域内,没有任何一门课程可以让你学完后一劳永逸,再好的课程也只能是“师傅领进门,修行靠个人”。“学无止境”这句话,在任何技术领域,都不只是良好的习惯,更是程序员和工程师们不被时代淘汰、获得更好机会和发展的必要前提。如果你觉得自己学习效率低,缺乏正确的指导,可以一起学习交流!加入我们吧!群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。

2401_84545830的博客 558

Android Retrofit 2,RxJava 2精要实例

本文旨在记录最热门框架的使用及简单实例,起到抛砖引用的目的,若有更复杂需求,还请参考其他资料.Retrofit : 概念:基于OkHtttp封装,基于注解方式,解耦更彻底的HTTP网络请求框架Retrofit 2+okhttp3使用: 1:添加依赖 compile 'com.squareup.retrofit2:retrofit:2.0.2' compile 'com.square

Aile 890

安卓rxJava与retrofit的基本使用

db.close();

m0_62089210的博客 571

【Android】Retrofit2和RxJava2新手快速上手

网上关于Retrofit2和RxJava2的博客特别多,但是内容特别复杂,一上来就讲解很高级的用法。所以这篇博客的主要目的,只是为了讲解一下核心用法,对于不求甚解的新手来说,看完基本已经够用了。因为博客本身是脱离具体应用环境的,很难通过文字把每个点讲得透彻,大可不必太过追求面面俱到。observeOn 指定接收事件的线程,这里是网络请求执行成功,处理回复数据的线程。subscribeOn 指定订阅事件的线程,这里是执行网络请求的线程。onSubscribe 事件被订阅,这里是即将开始执行网络请求。

天天向上 Up Up Up (*^▽^*) 799

Android构建Repository仓库。采用kotlin结合Hilt,Retrofit2+Rxjava3,Room,SharedPreferences,kotlin协程

1.引入Retrofit2+Rxjava3构建网络请求 (1). 在build.gradle引入retrofit2和rxjava3 //rxjava3 api 'io.reactivex.rxjava3:rxandroid:3.0.0' api 'io.reactivex.rxjava3:rxjava:3.0.0' //retrofit api 'com.squareup.retrofit2:converter-gson:2.9.0'...

weixin_55522643的博客 1958
上一篇: Android_Recyclerview和ScrollView滚动到最底部失败的解决办法
下一篇: Kotlin_和RecyclerView的一个demo
ParkSiHoo_
博客等级 码龄10年 20粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值