OKHTTP
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<T> {
void onFailure(String msg);
void onResponse(T data);
}
}
Logger的工具類
public class LoggerUtil {
public static void init(){
Logger.addLogAdapter(new AndroidLogAdapter());
}
public static void json(String json) {
Logger.json(json);
}
public static void d(String msg) {
Logger.d(msg);
}
}
添加請求頭的工具類
public class HeaderInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Request.Builder builder = request.newBuilder();
//請求頭也是參數
builder.addHeader("userId","");
builder.addHeader("sessionId","");
Request newRequest = builder.build();
Response proceed = chain.proceed(newRequest);
return proceed;
}
}