基于 Retrofit、OkHttp、Gson 封装通用网络框架

本文介绍了如何基于Retrofit、OkHttp和Gson封装一个简洁、实用、易移植的Android网络框架。首先,讨论了选择第三方网络框架的优势,然后详细阐述了封装过程,包括引入依赖、创建参数常量类、编写网络请求封装类、实现拦截器和转换工厂,以及定义API接口和回调接口。最后,提供了关于响应类的设计和基类响应的定制。
摘要由CSDN通过智能技术生成

背景

android开发过程中网络请求作为最重要的组成部分之一,然而对于大部分android开发者在网络请求上有太多疑惑,不知道如何去选型?通过原生的HttpClient、HttpUrlConnection封装?还是通过第三方框架再封装?笔者以为采用广泛被使用的第三方网络框架再封装为上策,因为这些网络框架如retrofit、okhttp、volley等是被全球android开发者维护着,无论在功能上、性能上、还是代码简洁性都相对于自己通过原生实现的给力.

目的

致力封装一个简洁、实用、易移植的网络框架模块.

正题

今天笔者就给大家基于retrofit + okhttp + gson 封装一个通用易懂的网络框架模块.
首先我们需要在gradle文件中将第三方依赖引入项目,代码如下:

dependencies {
    // retrofit + okhttp + gson
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.okhttp3:okhttp:3.4.1'
    compile 'com.google.code.gson:gson:2.7'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
}

接着开始我们的封装之路…

首先我们需要写一个参数常量类,用于定义一些常量,如请求Url地址、接口返回信息,代码如下:

/**
 * @className: InterfaceParameters
 * @classDescription: 参数配置
 * @author: leibing
 * @createTime: 2016/8/30
 */

public class InterfaceParameters {
    // 请求URL
    public final static String REQUEST_HTTP_URL = BuildConfig.API_URL;
    // 接口返回结果名称
    public final static String INFO = "info";
    // 接口返回错误码
    public final static String ERROR_CODE = "errorcode";
    // 接口返回错误信息
    public final static String ERROR_MSG = "errormsg";
}

然后写一个网络请求封装类JkApiRequest.class,采用单例的方式,配置网络请求参数以及返回网络请求api实例,代码如下:

/**
 * @className:JkApiRequest
 * @classDescription:网络请求
 * @author: leibing
 * @createTime: 2016/8/30
 */
public class JkApiRequest {
    // sington
    private static JkApiRequest instance;
    // Retrofit object
    private Retrofit retrofit;

    /**
     * Constructor
     * @author leibing
     * @createTime 2016/08/30
     * @lastModify 2016/08/30
     * @param
     * @return
     */
    private JkApiRequest(){
        OkHttpClient client = new OkHttpClient.Builder()
                .addInterceptor(new OkHttpInterceptor())
                .build();
        retrofit = new Retrofit.Builder()
                .baseUrl(InterfaceParameters.REQUEST_HTTP_URL)
                .addConverterFactory(JkApiConvertFactory.create())
                .client(client)
                .build();
    }

    /**
     * sington
     * @author leibing
     * @createTime 2016/08/30
     * @lastModify 2016/08/30
     * @param
     * @return
     */
    public static JkApiRequest getInstance(){
        if (instance == null){
            instance = new JkApiRequest();
        }
        return instance;
    }

    /**
     * create a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值