请求头

package com.guojunke.greendao.net;

import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;

import com.google.gson.Gson;
import com.guojunke.greendao.HeaderInterceptor;
import com.guojunke.greendao.LoggerUtil;

import java.io.IOException;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.ResponseBody;
import okhttp3.logging.HttpLoggingInterceptor;

public class OkHttpUtil {
private static OkHttpUtil sInstance;
private OkHttpClient mOkHttpClient;
private Gson mGson = new Gson();
private final int REQUEST_OK = 1;//请求成功
private final int REQUEST_FAILER = 2;//请求失败
private Handler mHandler = new Handler();

private OkHttpUtil() {
    OkHttpClient.Builder builder = new OkHttpClient.Builder();
    builder.writeTimeout(5000, TimeUnit.MILLISECONDS);
    builder.connectTimeout(5000, TimeUnit.MILLISECONDS);
    builder.readTimeout(5000, TimeUnit.MILLISECONDS);
    //添加请求头拦截器
    builder.addInterceptor(new HeaderInterceptor());
    builder.addInterceptor(new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
        @Override
        public void log(String message) {
            if (!TextUtils.isEmpty(message)) {
                if (message.startsWith("{") || message.startsWith("[")) {
                    //打印json
                    LoggerUtil.json(message);

                } else {
                    LoggerUtil.d(message);
                }

            }
        }
    }).setLevel(HttpLoggingInterceptor.Level.BODY));
    mOkHttpClient = builder.build();
}

//单例模式
public static OkHttpUtil getsInstance() {
    if (sInstance == null) {
        //a,b
        synchronized (OkHttpUtil.class) {
            if (sInstance == null) {
                sInstance = new OkHttpUtil();
            }
        }
    }
    return sInstance;
}

public <T> void doGet(String url, final Class<T> cls, final NetCallBack netCallBack) {
    Request.Builder builder = new Request.Builder();
    builder.url(url);
    final Request request = builder.build();
    Call call = mOkHttpClient.newCall(request);
    call.enqueue(new Callback() {
        @Override
        public void onFailure(Call call, final IOException e) {
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    netCallBack.onFailure(e.getMessage());
                }
            });
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            ResponseBody body = response.body();
            String jsonData = body.string();
         final  T data = mGson.fromJson(jsonData, cls);
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    netCallBack.onResponse(data);
                }
            });
        }
    });
}


public void doPostJson(String url, Map parame){
    Request.Builder builder = new Request.Builder();
    builder.url(url);
    RequestBody requestBody = null;
    MediaType parse = MediaType.parse("application/json utf-8");
    Gson gson = new Gson();
    String jsonParam = gson.toJson(parame);
    requestBody = RequestBody.create(parse, jsonParam);
    builder.post(requestBody);
    Request request = builder.build();
    Call call = mOkHttpClient.newCall(request);
    call.enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {

        }

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

public void postFormData(Map parame){

    FormBody formBody = null;

    FormBody.Builder builder = new FormBody.Builder();
    builder.add("","");
    //....
     formBody = builder.build();

     Request request = null;
     request=new Request.Builder()
             .url("")
             .post(formBody)
             .build();

    Call call = mOkHttpClient.newCall(request);
    call.enqueue(null);
}

public void postFile(){

}

public interface NetCallBack {
void onFailure(String msg);

    void onResponse(T data);
}

}

猜你喜欢

转载自blog.csdn.net/weixin_44660509/article/details/89302751