okhttp的使用 单例模式 get post请求
public class OkHttputil {
private static OkHttputil mInstance;
private Handler handler = new Handler();
private final OkHttpClient okHttpClient;
public static OkHttputil getInstance() {
if (mInstance == null) {
synchronized (OkHttputil.class) {
if (mInstance == null) {
mInstance = new OkHttputil();
}
}
}
return mInstance;
}
private OkHttputil() {
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
okHttpClient = new OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
.writeTimeout(5, TimeUnit.SECONDS)
.connectTimeout(5, TimeUnit.SECONDS)
.readTimeout(5, TimeUnit.SECONDS)
.build();
}
public void doGet(String url, final OkHttpCallBack okHttpCallBack) {
Request build = new Request.Builder().url(url).get().build();
okHttpClient.newCall(build).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
handler.post(new Runnable() {
@Override
public void run() {
okHttpCallBack.Failure("网络异常");
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.code()==200){
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
okHttpCallBack.Success(string);
}
});
}
}
});
}
public void doPost(String url, HashMap<String, String> params, final OkHttpCallBack callBack) {
FormBody.Builder builder = new FormBody.Builder();
for (Map.Entry<String,String> map:params.entrySet()){
builder.add(map.getKey(),map.getValue());
}
RequestBody requestBody = builder.build();
Request request = new Request.Builder().url(url).post(requestBody).build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
if (callBack!=null){
handler.post(new Runnable() {
@Override
public void run() {
callBack.Failure("网络不好使");
}
});
}
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (callBack!=null){
if (response.code()==200){
final String result = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
callBack.Success(result);
}
});
}
}
}
});
}
}