package com.icarvisions.icarscreen.utils;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import com.icarvisions.icarscreen.impl.CallBacks;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class OkHttpUtils {
private volatile static OkHttpUtils okHttpUtils = null;
private OkHttpClient client = null;
//单例模式
public static OkHttpUtils getInstance() {
if (okHttpUtils == null) {
//线程同步
synchronized (OkHttpUtils.class) {
if (okHttpUtils == null) {
okHttpUtils = new OkHttpUtils();
}
}
}
return okHttpUtils;
}
/**post表单请求**/
public void sendDatafForClicent(String url, Map<String, String> params,
final CallBacks callbacks) {
client = new OkHttpClient();
// 表单对象,包含input开始的操作
FormBody.Builder from = new FormBody.Builder();
// 键值对不为空,他的值也不为空
if (params != null && !params.isEmpty()) {
for (Map.Entry<String, String> entry : params.entrySet()) {
// 装载表单值
from.add(entry.getKey(), entry.getValue());
}
}
RequestBody body = from.build();
// post提交
Request request = new Request.Builder().url(url).post(body).build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
callbacks.onError(e.toString());
}
@Override
public void onResponse(Call call, Response response)
throws IOException {
if (response != null && response.isSuccessful()) {
callbacks.onSuccess(response.body().toString());
}
}
});
}
/**get请求**/
public void syncJsonStringByURL(String url, final CallBacks callbacks) {
client = new OkHttpClient();
final Request request = new Request.Builder().url(url).build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
callbacks.onError(e.toString());
}
//解析成功
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response != null && response.isSuccessful()) {
callbacks.onSuccess(response.body().string());
}
}
});
}
/***get请求url拼接***/
public String getUrl(String url, HashMap<String, String> map){
StringBuffer sb = new StringBuffer();
sb.append(url+"?");
for (Map.Entry<String, String> entry :map.entrySet()) {
sb.append(entry.getKey()+"=").append(entry.getValue()+"&");
}
sb.deleteCharAt(sb.toString().length()-1);
return sb.toString();
}
}