网络请求的post和get请求okHttps+自定义拦截器

https://github.com/YangJun1208/okHttp

依赖
implementation ‘com.squareup.okhttp3:okhttp:3.11.0’
implementation ‘com.squareup.okhttp3:logging-interceptor:3.11.0’

OkHttp

自定义拦截器

public class MyInterceptor implements Interceptor {
    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        log.I("TAG","1111111");
        return chain.proceed(request);
    }
}

接口

public interface ICallBack {
    void onsuccess(Object obj);
    void onfail(Exception e);
}

okhttpUtils

public class OkHttpUtils {
    private static volatile OkHttpUtils mInstance;

private OkHttpClient mClient;

private Handler mHandler =new Handler(Looper.getMainLooper());

public static OkHttpUtils getmInstance(){
     if(mInstance==null){
          synchronized (OkHttpUtils.class){
              mInstance=new OkHttpUtils();
          }
     }
     return mInstance;
}

private OkHttpUtils(){
  //  HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
 //   interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    mClient = new OkHttpClient.Builder()
            .connectTimeout(10, TimeUnit.SECONDS)
            .readTimeout(10, TimeUnit.SECONDS)
            .writeTimeout(10, TimeUnit.SECONDS)
          //  .addInterceptor(interceptor)
          .addInterceptor(new MyInterceptor())
            .build();
}

public String getExecute(String url, final ICallBack callBack, final Class clazz) throws IOException {
    Request request = new Request.Builder()
            .get()
            .url(url)
            .build();

    Call call = mClient.newCall(request);
    Response response = call.execute();
    return byte2String(response.body().bytes());
}

//get请求
/*public void getEnqueue(final String url, final ICallBack callBack, final Class clazz) {
    Request request = new Request.Builder()
            .get()
            .url(url)
            .build();

    Call call = mClient.newCall(request);
    call.enqueue(new Callback() {
        //网络请求连接失败
        @Override
        public void onFailure(Call call, final IOException e) {
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    callBack.onfail(e);
                }
            });
        }

        //网络请求连接成功
        @Override
        public void onResponse(Call call, Response response) throws IOException {
            String result = response.body().string();
             Gson gson = new Gson();
            final Object o = gson.fromJson(result, clazz);
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    callBack.onsuccess(o);
                }
            });
        }
    });
}*/

//post请求

public void postEnqueue(final String url, Map<String, String> params, final Class clazz, final ICallBack callBack) {
    FormBody.Builder builder = new FormBody.Builder();

    for (Map.Entry<String, String> entry : params.entrySet()) {
        builder.add(entry.getKey(), entry.getValue());
    }

    RequestBody body = builder.build();
    Request request = new Request.Builder()
            .post(body)
            .url(url)
            .build();

    Call call = mClient.newCall(request);
    call.enqueue(new Callback() {
        @Override
        public void onFailure(Call call, final IOException e) {
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    callBack.onfail(e);
                }
            });
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            String result = response.body().string();
            Gson gson = new Gson();
            final Object o = gson.fromJson(result, clazz);

            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    callBack.onsuccess(o);
                }
            });
        }
    });
}

private static String byte2String(byte[] bytes) {
    return new String(bytes);
}

Persenter

public interface Ipersener {
    //void getRequest(String dataUrl,Class clazz);

    void getRequest(String dataUrl, Map<String, String> map, Class clazz);
}

persenter的实现类

public class IPersenterImpl implements Ipersener {

private IModelImpl iModel;
private IView iView;

public IPersenterImpl(IView mIView){
    iView=mIView;
    iModel=new IModelImpl();
}
/*@Override
public void getRequest(String dataUrl, Class clazz) {
    iModel.getRequest(dataUrl, clazz, new MyCallBack() {
        @Override
        public void onSuccess(Object data) {
            iView.onSuccess(data);
        }
    });
}*/



public void deteach(){
    iModel=null;
    iView=null;
}


@Override
public void getRequest(String dataUrl, Map<String, String> map, Class clazz) {
    iModel.getRequest(dataUrl, map, clazz, new MyCallBack() {
        @Override
        public void onSuccess(Object data) {
            iView.onSuccess(data);
        }
    });
}

Model

public interface IModel{
    //get
    //void getRequest(String dataUrl, Class clazz, MyCallBack callBack);

    //post

    void getRequest(String url, Map<String, String> params, Class clazz, MyCallBack callBack);
}

model的实现类

public class IModelImpl implements IModel {

//post

@Override
public void getRequest(String url, Map<String, String> params, Class clazz, final MyCallBack callBack) {
    OkHttpUtils.getmInstance().postEnqueue(url, params, clazz, new ICallBack() {
        @Override
        public void onsuccess(Object obj) {
            callBack.onSuccess(obj);
        }

        @Override
        public void onfail(Exception e) {
            callBack.onSuccess(e.getMessage());
        }
    });
}


    // @Override
   // public void getRequest(String dataUrl, final Class clazz, final MyCallBack callBack) {
        //get请求
        /*OkHttpUtils.getmInstance().getEnqueue(dataUrl,new ICallBack() {
            @Override
            public void onsuccess(Object obj) {
                callBack.onSuccess(obj);
            }

        @Override
        public void onfail(Exception e) {
            callBack.onSuccess(e.getMessage());
        }
    },clazz);*/

接口的路径

public class Apis {
   // public static final String URL_LOGIN="http://www.zhaoapi.cn/user/login?mobile=%s&password=%s";
   // public static final String URL_ZHUCE="http://www.zhaoapi.cn/user/reg?mobile=%s&password=%s";
    public static final String URL_LOGIN_IMG="http://www.zhaoapi.cn/home/getHome";
    public static final String URL_LOGIN="http://www.zhaoapi.cn/user/login";
    public static final String URL_ZHUCE="http://www.zhaoapi.cn/user/reg";
}

MainActivity

public class MainActivity extends AppCompatActivity implements View.OnClickListener,IView {

private Button button_deng;
private EditText edit_phone,edit_pwd;
private TextView text_zhuce;
private ImageView image_QQ;
private IPersenterImpl iPersenter;
//private String dataUrl="";

private final int TYPE_LOGIN=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    button_deng=findViewById(R.id.button_deng);
    edit_phone=findViewById(R.id.edit_phone);
    edit_pwd=findViewById(R.id.edit_pwd);
    text_zhuce=findViewById(R.id.zhuce);
    image_QQ=findViewById(R.id.QQ);
    iPersenter=new IPersenterImpl(this);
    text_zhuce.setOnClickListener(this);
    button_deng.setOnClickListener(this);

}

@Override
public void onClick(View v) {
    switch (v.getId()){
        case R.id.zhuce:
            Intent intent = new Intent(MainActivity.this, ZhuCeActivity.class);
            startActivity(intent);
            break;
        case R.id.button_deng:
            Map<String, String> params = new HashMap<>();

            String phone = edit_phone.getText().toString();
            String pwd = edit_pwd.getText().toString();
            params.put("mobile",phone);
            params.put("password",pwd);
            iPersenter.getRequest(Apis.URL_LOGIN,params,DengBean.class);
            break;
    }
}

@Override
public void onSuccess(Object data) {
    if(data instanceof DengBean){
        DengBean dengBean= (DengBean) data;
        if(dengBean.getCode().equals("0")){
            Intent intent = new Intent(MainActivity.this, LoginActivity.class);
            startActivity(intent);
        }
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值