GifFun源码学习:网络模块的分析

前言:GifFun是第一行代码作者郭霖大神的开源作品GifFun地址,对于像作者这样的应届生来说,寻找工作的痛点是技术门槛和项目经验,由于新手的技术限制与见识广度,显然GifFun提供了一个学习的机会。在刚开始看的时候,笔者是一头雾水看不懂,学习 Kotlin后还是不懂,直到我对着代码试着重头敲一下,回头一看,便豁然开朗。因此,学习项目最好的方法是自己敲一遍。废话不多说,首先我们导入GifFu...
摘要由CSDN通过智能技术生成

前言:GifFun是第一行代码作者郭霖大神的开源作品GifFun地址,对于像作者这样的应届生来说,寻找工作的痛点是技术门槛和项目经验,由于新手的技术限制与见识广度,显然GifFun提供了一个学习的机会。在刚开始看的时候,笔者是一头雾水看不懂,学习 Kotlin后还是不懂,直到我对着代码试着重头敲一下,回头一看,便豁然开朗。
因此,学习项目最好的方法是自己敲一遍。

废话不多说,首先我们导入GifFun进Studio中,可以看到GifFun分为了4个模块,其中network显然是网络模块,网络模块下分4个包,exception显然是网络异常包,util包显然是工具包,model包为Json转换模型包,request包为网络请求包。
在这里插入图片描述
第一次看到这个结构的时候就跟我第一次看Android的目录结构一样。网络的第一步就是连接,所以首先要从Request入手,可以看到request包下的文件都是继承自Request文件,因此要进入Request文件查看,在进入该文件前,首先需要回顾下okhttp的完整用法:

val formbody = FormBody.Builder()
                .add("account", "admin")
                .add("password", "123456")
                .build();  //1
val request = Request.Builder()
                .addHeader("cookie", "session=123")
                .url("http://hello.world")
                .post(formbody)
                .build();  //2
val client = OkHttpClient()  //3
client.newCall(request).enqueue(callback)  //4

显然这是一个POST请求,我将其分为了4个部分,同样,Request文件我也将其分为对应的4个部分阅读。

第一部分,FormBody的组装

可以看到,Request文件下的formBody方法,具体代码如下:

/**
     * 构建POST、PUT、DELETE请求的参数体。
     *
     * @return 组装参数后的FormBody。
     */
    private fun formBody(): FormBody {
   
        val builder = FormBody.Builder()
        val params = getParams()
        if (params != null) {
   
            val keys = params.keys
            if (!keys.isEmpty()) {
   
                for (key in keys) {
   
                    val value = params[ke
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值