您的位置:首页 > 理论基础 > 计算机网络

OkHttp二次封装

2018-04-02 20:46 465 查看
加依赖:

 gson依赖:

    compile 'com.google.code.gson:gson:2.2.4'
 okhttp依赖:
    compile 'com.squareup.okhttp3:okhttp:3.10.0'
加权限:
    <uses-permission android:name="android.permission.INTERNET"/>


package com.bwie.s.util;  
/** 
 * author:Created by ZhangPengFei on 2017/12/19. 
 */  
import android.os.Handler;  
import android.util.Log;  
import java.io.IOException;  
import java.util.Map;  
import okhttp3.Call;  
import okhttp3.Callback;  
import okhttp3.OkHttpClient;  
import okhttp3.Request;  
import okhttp3.Response;  
  
public class OKHttpUtils {  
    private static OKHttpUtils okHttpUtils;  
    private static Handler handler = new Handler();  
    //私有化构造方法  
    public OKHttpUtils() {  
    }  
    /** 
     * 获取OKhttpClient实例化 
     */  
    public static OKHttpUtils getInstance() {  
        if (null == okHttpUtils) {  
            synchronized (OKHttpUtils.class) {  
                if (null == okHttpUtils) {  
                    okHttpUtils = new OKHttpUtils();  
                }  
            }  
        }  
        return okHttpUtils;  
    }  
    /** 
     * 封装的异步Get请求 
     */  
    public void doGet(String path, Map<String, String> map, final IOkHttpUtils okHttpCallBack) {  
        //创建一个字符串容器  
        StringBuilder sb = null;  
        if (map.size() == 0) {  
            if (null == sb) {  
                sb = new StringBuilder();  
                sb.append(path);  
            }  
        } else {  
            for (String key : map.keySet()) {  
                if (null == sb) {  
                    sb = new StringBuilder();  
                    sb.append(path);  
                    sb.append("?");  
                } else {  
                    sb.append("&");  
                }  
                sb.append(key).append("=").append(map.get(key));  
            }  
        }  
        //System.out.println("分类 : "+path + sb.toString());  
        OkHttpClient okHttpClient = new OkHttpClient.Builder()  
                .addInterceptor(new Intercept())//使用拦截器  
                .build();  
        Request request = new Request.Builder()  
                .url(sb.toString())  
                .get()  
                .build();  
        //OKHttp 网络  
        Call call = okHttpClient.newCall(request);  
        //异步请求  
        call.enqueue(new Callback() {  
            @Override  
            public void onFailure(Call call, IOException e) {  
                //请求失败  
                Log.e("SKN", "OK请求失败");  
                okHttpCallBack.onFailed(e.getMessage());  
            }  
            @Override  
            public void onResponse(Call call, final Response response) throws IOException {  
                final String str = response.body().string();  
                //请求成功  
                handler.post(new Runnable() {  
                    @Override  
                    public void run() {  
                        Log.e("WWWW", "请求成功" + str);  
                        okHttpCallBack.onSuccess(str);  
                    }  
                });  
            }  
        });  
    }  
}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: