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

    项目常常用的第三方的网络请求框架,很多时候都想把人家的框架进行简单的再封装,这个时候就涉及到了接口的使用。对一些不会用接口的童鞋来说,这是非常痛苦的,那些会用的就不用看了。实现只需要三步(没错,干什么都只需要三步)。
    第一步,定义自己的接口,相信百分之百的人都会。
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();
            }
        });

项目链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海晨忆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值