okhttp的二次封装

OkHttpManager类:

package com.example.demo01;

import android.os.Handler;

import java.io.IOException;

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

/**
 * Created by DELL on 2018/6/6.
 */

public class OkHttpManager {

    private final OkHttpClient okHttpClient;
    private static Handler handler;
    private volatile static OkHttpManager sManager;

    //使用构造方法完成初始化
    private OkHttpManager(){

        okHttpClient = new OkHttpClient();

        handler = new Handler();

    }

    //使用单例模式获取对象
    public static OkHttpManager getInstance(){

        OkHttpManager instance = null;

        if(sManager == null){
            synchronized (OkHttpManager.class){
                if(instance == null){
                    instance = new OkHttpManager();
                    sManager = instance;
                }
            }
        }

        return sManager;

    }

    //定义接口
    interface Fun1{
        void onResponse(String result);
    }

    //使用handler、接口保证处理数据的操作在主线程
    private static void onSuccessJsonStringMethod(final String JsonValue, final Fun1 callBack){

        handler.post(new Runnable() {
            @Override
            public void run() {
                if(callBack != null){
                    callBack.onResponse(JsonValue);
                }
            }
        });
    }

    /**
     * 暴露提供给外界方法
     * 请求指定的url返回的结果是json字符串
     */
    public void asyncJsonStringByURL(String url, final Fun1 callBack){
        Request request = new Request.Builder().url(url).build();

        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {

                if(response != null && response.isSuccessful()){
                    onSuccessJsonStringMethod(response.body().string(),callBack);
                }

            }
        });
    }
}

MainActivity:

package com.example.ok_demo1;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        OkHttpManager instance = OkHttpManager.getInstance();

        instance.asyncJsonStringById("", new OkHttpManager.Fun1() {
            @Override
            public void onResponse(String result) {
                
            }
        });
    }
}

猜你喜欢

转载自blog.csdn.net/gaoyiranblog/article/details/80692728