Android使用okhttpfinal+gson实现网络请求

本文介绍了如何在Android应用中使用okhttpfinal和gson库进行网络请求和响应解析。首先,文章提到了在build.gradle中导入所需的依赖。接着,详细讲解了初始化okhttpfinal、定义IRequestCallback接口以处理请求状态、创建RequestParamsBuilder来设置公共请求头、设计NetErrorBean用于错误处理、构建RequestServer类以发起请求,以及创建DataResponse类来解析JSON响应。最后,文章展示了在主Activity中如何使用这些组件来完成网络请求的完整周期。
摘要由CSDN通过智能技术生成

Android使用okhttpfinal+gson实现网络请求

近期整理了[okhttpfinal][6]+[gson][6] 实现网络请求和解析功能,特做此笔记:

代码部分

首先需要在build.gradle中导入包okhttpfinal,gson:

compile 'com.google.code.gson:gson:2.2.4'
compile 'com.jakewharton:butterknife:7.0.0'

在使用okhttpfinal之前需要初始化,建议放到Application中

         /**
         * 初始化OkHttpFinal
         */
        OkHttpFinalConfiguration.Builder builder = new OkHttpFinalConfiguration.Builder();
        //设置请求超时时间
        builder.setTimeout(60000);
        //初始化OkHttpFinalConfiguration
        OkHttpFinal.getInstance().init(builder.build());

创建IRequestCallback接口用来返回请求状态

public interface IRequestCallback<T> {
    /**
     * 执行网络访问之前的操作
     */
    void onStart(String msg);

    /**
     * 返回结果错误或解析失败
     */
    void onFailed(String msg);

    /**
     * 返回结果成功或解析成功
     */
    void onSuccessed(T t);
}

构建RequestParamsBuilder请求头类,用来封装公共请求头

public class RequestParamsBuilder {
   

    public static RequestParams buildRequestParams(HttpCycleContext context) {
        String token = "";
        RequestParams params = new RequestParams(context);
        /**
         * 公共请求头
         */
        params.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
        /**
         * 登录状态的token
         */
//        params.addFormDataPart("token","token");
        return params;
    }

    /**
     * 服务端返回错误信息,解析得到message
     * 如果返回数据解析异常时可调用该方法
     */
    public static String getMessage(String errorJson) {
        try {
            Gson gson = new Gson();
            NetErrorBean errorBean = gson.fromJson(errorJson, NetErrorBean.class);
            String errorMsg = errorBean.getMessage();
            errorMsg = errorMsg == null ? "" : errorJson;
            return errorMsg;
        } catch (Exception e) {
            return e.getMessage();
        }
    }
}

至于NetErrorBean类里面只包括了
/**
* key :
* message :
*/

创建RequestServer类

public class RequestServer {
   
    private HttpCycleContext context;

    public RequestServer(HttpCycleContext context) {
        this.context = context;
    }

    //传字符串参数
    public void getRequestServer(String request, IRequestCallback<DataResponse> callback) {
        RequestParams requestParams = RequestParamsBuilder.buildRequestParams(context);
        requestParams.addFormDataPart("request", request);
        getRequestServer(requestParams,callback);
    }
    //直接请求对象的参数
    public void getRequestServer(RequestParams params, final IRequestCallback<DataResponse> call) {
        final String msg = "";
        HttpRequest.get("http://wthrcdn.etouch.cn/weather_mini?", params, new BaseHttpRequestCallback() {
            @Override
            public void onStart() {
                super.onStart();
                if (call != null) {
                    call.onStart(msg);
                }
            }

            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值