Fuel:Kotlin / Android最简单的HTTP网络库

Fuel地址

  • 优点:简单方便,扩展多
  • 缺点:中文文档少,使用要在Android版本5及以上(sdk 19+)(不知道以后会不会有改进,现在是这样)

用法

  • 添加依赖
//Fuel
    //Android使用
    implementation 'com.github.kittinunf.fuel:fuel-android:1.16.0'
    //Gson解析
    implementation 'com.github.kittinunf.fuel:fuel-gson:1.16.0'

GET网络请求用法(有三种写法,我就列出一条)

//get,返回String
Fuel.get("https://httpbin.org/get").responseString { request, response, result ->
    //返回参数
    result.fold({ d ->
        //返回成功,处理数据
    }, { err ->
        //请求失败,执行错误处理
    })
}

有时候我们返回的时候希望直接转化成实体类

  • 要转化的实体类
package com.em.testfuel

data class User(val name: String, val age: Int) {
}
  • 请求
Fuel.get(url).responseObject<User> { request, response, result ->
            result.fold({
                Log.e("test",it.name)
            },{
                Log.e("test", it.message)
            })
        }

有时候我们需要这样写

data class User(val name: String, val age: Int) {
    class Deserializer : ResponseDeserializable<User> {
        override fun deserialize(content: String): User? {
            return Gson().fromJson(content, User::class.javaObjectType)
        }
    }
}
 Fuel.get(url).responseObject(User.Deserializer()) { request, response, result ->
            result.fold({
                Log.e("test",it.name)
            },{
                Log.e("test", it.message)
            })
        }

POST网络请求

举两个例子:

  • body是form-data
 val url2 = "http://192.168.0.101:8888/saveuser"

        Fuel.post(url2, listOf("name" to "李四","age" to 18)).responseObject<User> { request, response, result ->
            result.fold({
                Log.e("test",it.name)
            },{
                Log.e("test", it.message)
            })
        }
  • body是raw
        val url3 = "http://192.168.0.101:8889/name"

        val requestBean = User("王五", 22)
        val requestData = Gson().toJson(requestBean)
        val type = mutableMapOf<String, String>()
        type["Content-Type"] = "application/json"

        Fuel.post(url3)
            .body(requestData)
            .header(type)
            .responseString { _, _, result ->
                result.fold({
                    Log.e("test", it)
                }, {
                    Log.e("test", it.message)
                })
            }

更多示例请参考文档:Fuel文档

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 17,022评论 4赞 61
  • 高考结束了好几天,身在国外没有了炎炎夏日,也见不到街头巷尾终于大胆谈恋爱的刚毕业的学生,差点想不起来,又到了一年一...
    阿妮卡阅读 448评论 0赞 2
  • 《痴》 原创/简垃圾 曲海泛舟邀彼岸, 苦行广泪少人知。 闭门篁坐多思虑, 笑看词坛几度痴。 2018年...
    北平永胜阅读 219评论 0赞 3
  • 艺术大观阅读 243评论 3赞 2

友情链接更多精彩内容