OkHttp简单封装
OkHttp简单封装
由于OkHttp访问网络需要在子线程中进行,所以每次都单独开一个子线程,非常麻烦,而且会导致代码非常臃肿非常混乱。所以这里做了一个简单的封装,使用OkHttp访问网络非常简单了。只需要一句话就行。记得在Application中初始化OkHttpClient哦.
封装的代码
public class HttpUtils {
    /**
     * 获取Okhttp客户端
     * 用于管理所有的请求,内部支持并发,所以我们不必每次请求都创建一个 OkHttpClient
     * 对象,这是非常耗费资源的
     */
    public static OkHttpClient okHttpClient = null;
    /**
     * 初始化OkHttpClient
     */
    public static void initOkHttp() {
        if (okHttpClient == null) {
            okHttpClient = new OkHttpClient();
        }
    }
    /**
     * 网络连接是否正常
     *
     * @return true:有网络    false:无网络
     */
    public static boolean isNetworkConnected(Context context) {
        if (context != null) {
            ConnectivityManager mConnectivityManager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
            if (mNetworkInfo != null) {
                return mNetworkInfo.isAvailable();
            }
        }
        return false;
    }
    /**
     * get方式访问网络
     *
     * @param url      要访问的url
     * @param from     由谁发起的调用,用于区别调用者
     * @param listener 访问网络的接口回调
     */
    public static void requestGet(final String url, final int from, final HttpCallbackListener
            listener) {
        //1, 开一个子线程请求网络数据
        new Thread(new Runnable() {
            @Override
            public void run() {
                //2, 创建请求
                Request request = new Request.Builder().url(url).build();
                try {
                    //3, 发送请求
                    Response response = HttpUtils.okHttpClient.newCall(request).execute();
                    //4, 请求成功
                    if (response.isSuccessful()) {
                        if (listener != null) {
                            //回调成功的接口
                            listener.onFinish(from, response.body().string());
                        }
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                    if (listener != null) {
                        //回调失败的接口
                        listener.onError(e);
                    }
                }
            }
        }).start();
    }
}
其中用到的接口
/**
 * Created by xfhy on 2017/6/18.
 * 网络调用回调接口
 */
public interface HttpCallbackListener {
    /**
     * 网络数据访问成功回调
     * @param from  由谁发起的调用,用于区别调用者
     * @param response 访问成功返回的数据
     */
    void onFinish(int from, String response);
    /**
     * 在这里对异常情况进行处理
     * @param e
     */
    void onError(Exception e);
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号