接口的使用—对OKGO最简单的在封装

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27634797/article/details/71054983
    项目常常用的第三方的网络请求框架,很多时候都想把人家的框架进行简单的再封装,这个时候就涉及到了接口的使用。对一些不会用接口的童鞋来说,这是非常痛苦的,那些会用的就不用看了。实现只需要三步(没错,干什么都只需要三步)。
    第一步,定义自己的接口,相信百分之百的人都会。
public interface MyHttpUtilsInterface {
    void onStart(BaseRequest request);
    void onSuccess(String s, Call call, Response response);
    void onError(Call call, Response response, Exception e);
    void onAfter(String s, Exception e);
}
    会用okgo的童鞋相信都知道这些方法的作用。onSuccess()方法请求成功的时候调用,onError()请求失败的时候调用,onStart()在请求失败或者请求成功之前调用,onAfter()在请求失败或者请求成功之后调用。我们与用户交互的diaolog就可以在onStart()方法里面show,在onAfter()方法里面dismiss。这里需要传的参数,我是根据okgo回调方法里面能获取到的参数定义的,你可以自己需要什么参数,自己定义。也可以不传。
    第二步,网络请求类。
package com.example.wz.myapplication.http;

import android.app.ProgressDialog;
import android.content.Context;
import com.example.wz.myapplication.Interface.MyHttpUtilsInterface;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.StringCallback;
import com.lzy.okgo.request.BaseRequest;
import okhttp3.Call;
import okhttp3.Response;

/**
 * 这里我只写了一个获取ip请求的方法.还有其他一系列的请求都在这个类里面
 * 写对应的方法调用
 */

public class MyHttpUtils {
    private MyHttpUtilsInterface httpUtilsInterface;
    private Context context;
    private ProgressDialog progressDialog;

    public MyHttpUtils(Context context) {
        this.context = context;
    }

    public void ipUtils(final MyHttpUtilsInterface httpUtilsInterface){
        this.httpUtilsInterface = httpUtilsInterface;
        String url = "http://ip.taobao.com/service/getIpInfo2.php";
        OkGo.post(url).params("ip", "myip").execute(new StringCallback() {
            @Override
            public void onBefore(BaseRequest request) {
                super.onBefore(request);
                progressDialog = new ProgressDialog(context);//dialog自己项目需要什么样的,自己定义
                progressDialog.show();//onstart方法里面show
                httpUtilsInterface.onStart(request);//在框架对应的方法里面调用自己接口对应的方法
            }

            @Override
            public void onSuccess(String s, Call call, Response response) {
                httpUtilsInterface.onSuccess(s,call,response);//在框架对应的方法里面调用自己接口对应的方法
            }

            @Override
            public void onAfter(String s, Exception e) {
                super.onAfter(s, e);
                httpUtilsInterface.onAfter(s,e);//在框架对应的方法里面调用自己接口对应的方法
                progressDialog.dismiss();//onafter方法里面隐藏
            }

            @Override
            public void onError(Call call, Response response, Exception e) {
                super.onError(call, response, e);
                httpUtilsInterface.onError(call, response, e);//在框架对应的方法里面调用自己接口对应的方法
            }

        });
    }

}
    第三步,在类中使用。
MyHttpUtils myHttpUtils = new MyHttpUtils(this);
        myHttpUtils.ipUtils(new MyHttpUtilsInterface() {
            @Override
            public void onStart(BaseRequest request) {
                Toast.makeText(MainActivity.this, request.toString(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onSuccess(String s, Call call, Response response) {
                Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onAfter(String s, Exception e) {
                Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onError(Call call, Response response, Exception e) {
                Toast.makeText(MainActivity.this, response.toString(), Toast.LENGTH_SHORT).show();
            }
        });

项目链接

阅读更多

没有更多推荐了,返回首页