关于sjoner/khttp的使用详解

本文详细介绍了sjoner/khttp插件的使用方法,包括插件导入注意事项、常见错误解决及自定义响应转换器技巧,适合希望利用okHttp3网络框架进行Kotlin封装的开发者阅读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

记录些关于sjoner/khttp源码使用时踩的坑

正文

1.什么是sjoner/khttp

sjoner/khttp是使用过的对okHttp3网络框架进行kotlin再封装中比较好用的一个第三方插件,由于该插件的作者君上传完后也就没有了后续的更新,所以本人建议要使用的话最好下载源码导入比较好,便于根据个人实际需要进行相应的修改。

2.导入插件代码时需要注意的坑

对于直接gradle进行implementation的,由于github上有详细的导入教程,在此不再赘述。而使用导入的同学,在导入成功并写好Demo运行时也许会发现以下错误:
图1
这是因为在khttp的gradle中使用的api 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.21',而如果你的module 中使用了 Java1.8,那必须在app.gradle的android中添加以下参数,否则就会报以上的错误:

compileOptions {//如果你的module 中使用了 Java1.8,那必须添加以下参数
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

3.运行Demo时需要注意的坑

当你代码写好,准备运行的时候,也许会发现,你的程序崩溃了,出现了以下的崩溃日志:
图2
无法转换成相应的实体,这是因为源码中的响应转换器,如下图
图3图4
源码中对ResponseBody并没有做处理,而是直接输出了,而ResponseBody无法直接转换成我们自定义的响应实体,所以会抛异常。在此,我们需要修改DefaultResponseConverter或自定义自己的相关转换器对返回值进行处理,比如这样:

/**
 * 响应转换器
 */
class HttpResponseConverter: Converter<ResponseBody?, Any> {
    /**
     * @param value 返回值
     * @param returnType 返回类型
     */
    override fun convert(value: ResponseBody?, returnType: Type): Any {
        return gSon.fromJson(value?.string()?:"", returnType)
    }

}
class BaseApplication: Application() {
    companion object {
        lateinit var instance: BaseApplication
            private set
    }
    override fun onCreate() {
        super.onCreate()
        instance = this
        gSon = Gson()
        initRetrofit {
            baseUrl("https://api.github.com/")
            responseConverter = HttpResponseConverter()
            debug = true
        }
    }
}
var Any.gSon: Gson by Delegates.notNull()

PS:implementation 'com.google.code.gson:gson:2.8.1'

后记

ok,暂时就这么多,其他的往上加就行,没难度,比如处理请求数据;数据加密和解密,大胆修改源码,还能给你玩坏不成。

——End——

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值