public class OkHttpUtils {
private static OkHttpUtils okHttpUtils;
private static Handler handler = new Handler();
//私有化构造方法
private OkHttpUtils(){
}
/**
* 获取OkhttpCLient的实例方法
* @return
*/
/*public static OkHttpClient getInstance(){//懒汉式
if(null == okHttpClient){
synchronized (OkHttpUtils.class){
if(null == okHttpClient)
okHttpClient = new OkHttpClient();
}
}
return okHttpClient;
}*/
/**
* 得到这个OKHttpUtils实例
* @return
*/
public static OkHttpUtils getInstance(){
if(null == okHttpUtils){
synchronized (OkHttpUtils.class){
if(null == okHttpUtils)
okHttpUtils = new OkHttpUtils();
}
}
return okHttpUtils;
}
/**
* 封装的异步Get请求
* @param path
* @param
*/
public void doGet(String path,Map<String,String> map,final LoginCallBack loginCallBack){
//创建一个字符串容器
StringBuilder sb = null;//new StringBuilder();//线程非安全
for (String key : map.keySet()) {
//"mobile="+value+"&paword="+value http://www.baidu.com?"mobile="+value+"&paword="+value
//sb.append(key).append("=").append(map.get(key)).append("&");//moble=value&
if(null == sb){
sb = new StringBuilder();
sb.append("?");
}else{
sb.append("&");
}
sb.append(key).append("=").append(map.get(key));
}
Request request= new Request.Builder()
.url(path+sb.toString())//http://www.baidu.com?"mobile="+value+"&paword="+value
.get()
.build();
//OkHttp 网络
OkHttpClient okHttpClient = new OkHttpClient();
Call call = okHttpClient.newCall(request);
//异步请求
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
//子线程的
handler.post(new Runnable() {
@Override
public void run() {
//失败
loginCallBack.onFailed(e.getMessage());
}
});
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
handler.post(new Runnable() {
@Override
public void run() {
try {
loginCallBack.onSuccess(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
});
}
/**
* 异步post请求封装
* @param path
* @param map
* @param loginCallBack
*/
public static void doPost(String path, Map<String,String> map, final LoginCallBack loginCallBack){
//构建请求参数
FormBody.Builder bodyBuilder = new FormBody.Builder();
for (String key : map.keySet()) {
bodyBuilder.add(key,map.get(key));
}
Request request = new Request.Builder()
.post(bodyBuilder.build())
.url(path)
.build();
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
//失败
//子线程的
handler.post(new Runnable() {
@Override
public void run() {
//失败
loginCallBack.onFailed(e.getMessage());
}
});
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
handler.post(new Runnable() {
@Override
public void run() {
try {
loginCallBack.onSuccess(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
});
}
}