美文网首页
OKHttp简单封装

OKHttp简单封装

作者: 小李同学今天博学了吗 | 来源:发表于2020-11-26 17:00 被阅读0次

接口:

package com.example.mvptest;

public interface ReqCallBack<T> {
    void onRequSuccess(T result);

    void onReqFailed(String errorMsg);
}

管理类

package com.example.mvptest;

import android.content.Context;
import android.os.Handler;

import org.jetbrains.annotations.NotNull;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class OkHttpManager {
    private static volatile  OkHttpManager mInstancee;
    private OkHttpClient okHttpClient;
    private Handler okHttpHandler;

    private OkHttpManager(Context context){
           okHttpClient = new OkHttpClient();
           okHttpHandler = new Handler(context.getMainLooper());
    }

    public static OkHttpManager getInstance(Context context){
        if(mInstancee == null){
            synchronized (OkHttpManager.class){
                if(mInstancee == null){
                    mInstancee = new OkHttpManager(context);
                }
            }
        }
        return mInstancee;
    }

    public <T> Call getAsycHttp(String url, final ReqCallBack<T> callBack){
        Request request = new Request.Builder()
                .url(url)
                .build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(@NotNull Call call, @NotNull IOException e) {
                failedCallBack("访问失败",callBack);
            }

            @Override
            public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
                if(response.isSuccessful()){
                    String string = response.body().string();
                    successCallBack((T)string,callBack);
                }else{
                    failedCallBack("服务器错误",callBack);
                }
            }
        });

        return call;
    }

    private <T> void successCallBack(final T result, final ReqCallBack<T> callBack){
            okHttpHandler.post(new Runnable() {
                @Override
                public void run() {
                    if(callBack != null){
                        callBack.onRequSuccess(result);
                    }
                }
            });
    }

    private <T> void failedCallBack(final String errorMsg, final ReqCallBack<T> callBack){
           okHttpHandler.post(new Runnable() {
               @Override
               public void run() {
                   if(callBack != null){
                       callBack.onReqFailed(errorMsg);
                   }
               }
           });
    }

}

使用

 OkHttpManager.getInstance(this).getAsycHttp("https://www.baidu.com", new ReqCallBack<String>() {
            @Override
            public void onRequSuccess(String result) {
                Log.e(TAG, "onRequSuccess: "+result);
            }

            @Override
            public void onReqFailed(String errorMsg) {

            }
        });

相关文章

  • OkHttp通用简单封装

    CommonOkHttp--通用OkHttp简单封装 一个用于Java应用(非安卓)的OkHttp的简单封装git...

  • Android高级开发之【OkHttp】详解(附项目源码)

    文章大纲 一、OkHttp简介二、OkHttp简单使用三、OkHttp封装四、项目源码下载 一、OkHttp简介 ...

  • OkHttp简单封装

    使用链式编程思想封装网络请求客户端 } OkHttp初始化设置,请求返回处理 // ...

  • 简单封装OkHttp

    1.首先导入依赖 2.新建一个class 3.在Activity中调用

  • Okhttp简单封装

    一、Okhttp简介Android为我们提供了两种HTTP交互的方式: HttpURLConnection 和 A...

  • OKHttp简单封装

    接口: 管理类 使用

  • okhttp简单封装

    在github 维护最新代码https://github.com/fufufufuli/fuli-util 历史版本如下

  • OkHttp 的简单封装

    OkhttpIntegration 目前对应 OkHttp 版本3.8.1. Demo地址 使用 Android ...

  • OkHttp的简单封装

    关于OkHttp的基础使用可以看我之前写的这篇文章 但是每次写网络请求,都要写一大堆重复的东西,所以肯定要封装一下...

  • OkHttp的简单封装

    主要是记录一下封装的思路~ 封装的好处: 1.可复用性 2.与业务逻辑隔离 3.可扩展性 封装的思路: 封装一个公...

网友评论

      本文标题:OKHttp简单封装

      本文链接:https://www.haomeiwen.com/subject/qjyeuktx.html