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