初始化Retrofit,Okhttp abstract class BaseRetrofitClient { companion object { private const...const val BASE_URL = "https://www.wanandroid.com" } private val client: OkHttpClient get...it.message, showLoading = false, showEnd = false)) } 新建ViewModel 在HomeViewModel中实例化HomeRepository,调用...MVVM思想的代码执行流程就完毕了。...这是完整的目录结构,以及[项目地址] ?
小编说:互操作就是在Kotlin中可以调用其他编程语言的接口,只要它们开放了接口,Kotlin就可以调用其成员属性和成员方法,这是其他编程语言所无法比拟的。...同时,在进行Java编程时也可以调用Kotlin中的API接口。 本文选自《Kotlin开发快速入门与实战》 Kotlin与Java互操作 1 ....Kotlin调用Java Kotlin在设计时就考虑了与Java的互操作性。可以从Kotlin中自然地调用现有的Java代码,在Java代码中也可以很顺利地调用Kotlin代码。...这意味着Kotlin函数字面值可以被自动转换成只有一个非默认方法的Java接口的实现,只要这个方法的参数类型能够与这个Kotlin函数的参数类型相匹配就行。...【例4】首先使用Java创建一个SAMInJava类,然后通过Kotlin调用Java中的接口。
本章内容包括: 用于处理集合、字符串和正则表达式的函数 使用命名参数、默认参数,以及中辍调用的语法 通过扩展函数和属性来适配Java库 使用顶层函数、局部函数和属性架构代码 1、在Kotlin中创建集合...LogUtil.e(builder) // Kotlin! 4.处理集合: 可变参数、中辍调用和库的支持 这一节将会展示 Kotlin 标准库中用来处理集合的一些方法。...API ---------------*/ // 基于 Kotlin中的集合与Java的类相同,但是对API做了扩展。...Kotlin 可以给函数参数定义默认值,这样大大降低了重载函数的必要性,而且命名参数让多参数函数的调用更加易读。...Kotlin 可以用扩展函数和属性来扩展任何类的API,包括在外部中定义的类,而不需要修改其源代码,也没有运行时的开销。 中辍调用提供了处理单个参数的,类似调用运算符方法的简明语法。
于是我在Retrofit中加入了Rxjava,这也是当下蛮流行的一个请求框架。然后又利用了Kotlin的一些新特性,使网络请求变得特别简单,代码量特别少。...通过这里了解更多:https://www.zalou.cn/article/126567.htm Retrofit Retrofit与okhttp共同出自于Square公司,retrofit就是对okhttp...然后就是RetrofitUrl,这是一个接口,名字可以根据个人喜好进行定义,其内放置请求的接口: interface RetrofitUrl { //方法名自定义 @GET("接口地址") fun...通过Application获取到Retrofit后,我们就可以通过它去调用我们刚刚在接口中定义的方法,因为配置了RxJava,所以调用方法后会返回一个Observable,这也是我们在接口中定义的返回类型...runRxLambda的方法内也就是调用了我们刚刚写的runRx方法,然后将对应的方法传入就可以了。
对Retrofit已经使用了一点时间了,是时候归纳一下各种网络请求的service了。...下面分为GET、POST、DELETE还有PUT的请求,说明@Path、@Query、@QueryMap、@Body、@Field的用法。...初始化Retrofit String BASE_URL = "http://102.10.10.132/api/"; Retrofit retrofit = new Retrofit.Builder()...,与Post中的Body相同 PUT(这个请求很少用到,例子就写一个) http://102.10.10.132/api/Accounts/1 http://102.10.10.132/api/Accounts...Tips Tips1 使用@Field时记得添加@FormUrlEncoded Tips2 若需要重新定义接口地址,可以使用@Url,将地址以参数的形式传入即可。
1.简介 Retrofit对协程的支持非常的简陋。...在kotlin中使用不符合kotlin的优雅 interface TestServer { @GET("banner/json") suspend fun banner(): ApiResponse...kotlin应该一行代码解决问题,才符合kotlin的优雅 使用本框架后 interface TestServer { @GET("banner/json") suspend fun awaitBanner...4.自定义CallAdapterFactory Retrofit在调用后直接进行了网络请求,因此很不好操作。我们把网络请求的控制权放在我们手里,就能随意操作。...await val awaitBanner1 = service.awaitBanner().await() //第一个接口完成后调用第二个接口 val
前言 Retrofit是现在比较流行的网络请求框架,可以理解为okhttp的加强版,底层封装了Okhttp。 准确来说,Retrofit是一个RESTful的http网络请求框架的封装。...因为网络请求工作本质上是由okhttp来完成,而Retrofit负责网络请求接口的封装。...@FiledMap 多用于Post请求中的表单字段,需要结合@FromUrlEncoded使用 @Part 用于表单字段,Part和PartMap与@multipart注解结合使用,适合文件上传的情况...新版本的Retrofit已经可以方便使用Kotlin的协程。...import retrofit2.Response import retrofit2.http.GET interface UserApi { //get请求 @GET("userlist.json
不久前在群里看到某小伙伴提出一个问题:“应后端要求需要在GET请求加入Body但Retrofit 中GET 请求添加Body会报错,如何解决?”...所以你们公司正在使用REST ful API而Retrofit将是你的不二选择 为什么将请求设置为(接口+注解)形式?...而Retrofit通过注解的形式将Request需要的必要信息全依附在方法上(还是个抽象方法,尽量撇除一切多余信息),作为使用者只需要调用对应方法即可实现请求。...至于如何解析、构造、发起请求 Retrofit内部会做处理,调用者不想也不需要知道, 所以Retrofit通过门面模式帮调用者屏蔽了一些无用信息,只暴露出唯一入口,让调用者更专注于业务开发。...Call融合,关于Observable与Call融合(适配)其实是与业务无关的,此时可以引入适配器模式将Call适配成Observable,将适配细节从业务层挪到Retrofit内部,符合迪米特法则 策略模式
之前用Java写网络框架时是通过Okhttp、Retrofit、rxJava、那么在Kotlin中就使用Retrofit和协程来操作,在app的build.gradle的dependencies{}闭包中添加如下代码...然后我们可以进入我的控制台 点击这里申请接口,这里我选择了一个抗击疫情的接口,点击申请,可以看到这里有免费的调用次数,建议开发者使用自己的Key去调用。...这里我们就拿到了返回的数据,通过返回的数据去构建Kotlin的Data类。...,通过网络地址构建一个Retrofit,然后根据传入的Service去访问接口,这里还有一个内联函数。...Retrofit网络请求接口都可以直接调用await()函数了。
后面出现Retrofit ,将OkHttp3 进行了封装,将请求API 接口化,将返回的数据结合GSON等各种转换器转换为直接面向开发的对象,大大的提升了我们的开发效率,为了解决Android UI/子线程...负责的功能场景方便切换,大家开始结合了RxJava, 这一操作直接将Retrofit + OkHttp3 + RxJava 组合的网络框架推上了热门写法, 现状 kotlin 的出现是Google 对于...= Resource(Status.LOADING, data, null) } } 2.3 使用Retrofit 创建API 接口、接口帮助类 将接口管理和请求放在不同的类文件中,方便管理 API...接口 interface ApiService { @GET("{page}") suspend fun getGirls(@Path("page") page: Int): Girls...,inline 对函数再次调用,可以查一下这样用的优点。
access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。...以后我们需要获取access_token,直接从AccessTokenService调用就行了。 自定义菜单 对于个人性质的订阅号,没有自定义菜单等高级功能。所以下面我改用微信测试号来验证这些功能。...{"errcode":40018,"errmsg":"invalid button name size"} 本来我想着找一个比较好用的Java/Kotlin的HTTP传输库来进行这些接口的操作。...access_token=ACCESS_TOKEN 删除自定义菜单 删除自定义菜单也很简单,同样的,向下面的URL发送GET请求即可。...access_token=ACCESS_TOKEN 结语 本来微信开发还有很多内容。但是到了这里我就完全不想写了。一来与微信交互需要发送多种类型的HTTP请求给微信服务器。
- 最终就是用户扫描的二维码 内网穿透工具,natapp.cn - 因为需要让公众号调用到本地的服务,所需要把你的服务映射到公网上使用。...二维码获取 从微信官网文档阅读可以知道,为了获取扫码登录的二维码,则需要3步; 先获取 AccessToken,它是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。...") String accessToken, @Body WeixinQrCodeRequestDTO weixinQrCodeRequestDTO); } 使用 retrofit2 对接接口,它可以以一种面向对象的思维...retrofit) { return retrofit.create(IWeixinApiService.class); } } 使用 retrofit2 开发好接口后,在再...,同时验签和接收公众号回调也都是同一个接口名字,只是一个是 get 请求,另外一个是 post 请求。
return new RequestFactory(this); } 可以看到主要分为两步: 通过parseMethodAnnotation来解析出请求的方式,例如GET、POST与PUT等等...接口方法是协程,同时返回类型是Response类型 //noinspection unchecked Kotlin compiler guarantees ReturnT to be Object...接口方法是协程,同时返回类型是body,即自定义的model类型 //noinspection unchecked Kotlin compiler guarantees ReturnT to...因为在Retrofit之前的几个版本,如果使用协程是不支持接口方法直接返回model的,需要返回Call类型的数据。...那么一个完美的协程接口调用就是这样实现的。 嗯,结束了,整理一下也不是很复杂吧。之后使用Retroift写协程时将通畅多了。
一个常规例子 我们通过 Retrofit 发送一个网络请求,其中接口如下: interface GitHubServiceApi { @GET("users/{login}") fun...重复或者分散的异常处理逻辑,在请求失败时我们调用了一次 showError,在数据读取失败时我们又调用了一次,真实的开发环境中可能会有更多的重复 Kotlin 本身的语法已经让这段代码看上去好很多了,...那么我们需要为 Retrofit 添加对 Deferred 的支持,这需要用到开源库: implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter...否则调用 resumeWithException 来抛出异常,简直与 Callback 一模一样。...首先我们修改接口方法: @GET("users/{login}") suspend fun getUser(@Path("login") login: String): User 这种情况 Retrofit
:$kotlin_version" 2、Demo说明 该项目使用MVP模式,里面用到了Retrofit2+RxJava2,然后使用了聚合的万年历接口,Demo非常简单便于初学者快速掌握。...,通过类名.属性名或者类名.方法名进行调用 class RetrofitUtil { companion object { /** * 创建Retrofit...结合RxJava 我们直接就可以调用接口了 RetrofitUtil .retrofitService .calenderDay(date,"933dc930886c8c0717607f9f8bae0b48...NO.2 《Kotlin开发快速入门与实战》 ? 学习本书之前不需要具备任何的计算机专业背景,任何有志于APP开发的读者都能利用本书从头学起。...你可以在这里找到所有与 Kotlin 相关的新闻、更新、教程、使用技巧等的内容。
一个常规例子 我们通过 Retrofit 发送一个网络请求,其中接口如下: interface GitHubServiceApi { @GET("users/{login}") fun...重复或者分散的异常处理逻辑,在请求失败时我们调用了一次 showError,在数据读取失败时我们又调用了一次,真实的开发环境中可能会有更多的重复 Kotlin 本身的语法已经让这段代码看上去好很多了,...那么我们需要为 Retrofit 添加对 Deferred 的支持,这需要用到开源库: implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter...,否则调用 resumeWithException 来抛出异常,简直与 Callback 一模一样。...首先我们修改接口方法: @GET("users/{login}") suspend fun getUser(@Path("login") login: String): User 这种情况 Retrofit
前面我们使用Java来运用JetPack中的一系列组件,又使用kotlin运用这些组件实现了一系列功能: kotlin--Flow文件下载 kotlin--Flow结合Room运用 kotlin--Flow...结合retrofit运用 kotlin--StateFlow运用 kotlin--SharedFlow运用 接着,Jetpack的Paging3中,我们使用的语言是kotlin,相信通过这些项目的对比,...你就能发现koltin取代Java的理由了,kotlin拥有更好的扩展性,更高的性能,更简洁的代码,更好的Jetpack组件支持,如果你还对kotlin不熟悉,那么可以查阅我的kotlin专题博客,在此也要感谢动脑学院....addConverterFactory(GsonConverterFactory.create()) .build() } } 三、接口与实体类...1.根据接口和接口返回的json数据,分别创建API和实体类 api地址:ikds.do?
注意:Coroutine和retrofit的使用在retrofit2.6之前之后是有区别的 一、定义接口 /** * 可以从如下网址查找测试api * https://www.wanandroid.com...*/ @GET("/banner/json") suspend fun getBanner(): Response } 二、创建retrofit...'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' implementation 'androidx.lifecycle...具体用法就是先new一个出来,然后在页面destroy的时候调用cancel来释放所有未完成的job MyDispatcher是用来解决线程池共用的问题。...val ioScope = SupervisorJob() + Dispatchers.IO 四、比较与取舍 首先我们要明确,Coroutine本来是准备来取代Rxjava的。
前言 Kotlin协程是什么,如何使用?如何结合Retrofit使用?Kotlin协程的优势在哪里?相信看完这一篇你一定有所收获!...,首先在Apiservice中定义一个接口如下: @GET("https://wanandroid.com/article/listproject/0/json") fun queryData(): Call...这样,本来要分步做的两件事情可以同时做了,当然可以提高效率了,async函数必须在协程作用域中调用,会创建一个新的子协程,并返回一个Deferred对象,调用这个对象的await方法 就可以获取执行结果...coroutineScope函数是一个挂起函数,它会继承外部的协程作用域并创建一个子协程,只能在协程作用域或者挂起函数中调用 launch函数必须在协程的作用域中才能调用。...最后的最后,协程的强大远远不止上述 在项目中使用Jetpack 对kotlin的扩展,可以更加便捷的创建和使用协程.
对项目的基本介绍 1.整个框架主要是给MVVM框架使用的,自己写完interface接口后,通过自定义的注解就能自动生成接口方法 2.用Kotlin的Flow去代替Rxjava,因为我发现RxJava功能很强大...4.发起的网络请求是与宿主生命周期绑定的,在网络请求回来之前,宿主已经销毁的话,网络请求也会中断的 基本使用方法 1.先定义接口类 和Retrofit一样,需要定义一个接口类 其中@AutoApi,@AutoFlowApi...----------------- [1240] 4.在对应地方通过viewmodel调用 调用接口,传入对应参数 [1240] 在合适的地方观察 [1240] Retrofit的封装 上面说到在Repository...类的apiService就是通过Retrofit拿到的接口代理类。...] 看一下这个注解是怎么定义的 注解是支持有默认值的,因为kotlin的方法是可以在变量中直接赋初值的,这样调用就不用传值了,所以这里也做一个支持,让调用时候更加简洁 [1240] 生成的流程 [1240
领取专属 10元无门槛券
手把手带您无忧上云