public class OkHttpUtil { private static volatile OkHttpUtil instance; private static Handler handler=new Handler(); private OkHttpUtil(){ } public static OkHttpUtil getInstance(){ if(null== instance){ synchronized (OkHttpUtil.class){ if(instance==null){ instance=new OkHttpUtil(); } } } return instance; } public void post(String url, Map<String,String> map, final CallBack callBack, final Class cls, final String tag){ if (TextUtils.isEmpty(url)) { return; } StringBuffer sb = new StringBuffer(); sb.append(url); // 如果包含?说明是2.3类型 if (url.contains("?")) { // 如果包含?并且?是最后一位,对应是2类型 if (url.indexOf("?") == url.length() - 1) { } else { // 如果包含?并且?不是最后一位,对应是3类型 sb.append("&"); } } else { // 不包含?,对应的1类型 sb.append("?"); } // 遍历map集合进行拼接,拼接的形式是 key=value& for (Map.Entry<String, String> entry : map.entrySet()) { sb.append(entry.getKey()) .append("=") .append(entry.getValue()) .append("&"); } // 如果存在&号,把最后一个&去掉 if (sb.indexOf("&") != -1) { sb.deleteCharAt(sb.lastIndexOf("&")); } Log.d("TT", "sb: "+sb); OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(new LoggingInterceptor()) .build(); /*FormBody.Builder builder = new FormBody.Builder(); for (Map.Entry<String,String> entry:map.entrySet()){ builder.add(entry.getKey(),entry.getValue()); } Request request = new Request.Builder() .post(builder.build()) .url(url) .build();*/ final Request request = new Request.Builder() .get() .url(sb.toString()) .build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) { handler.post(new Runnable() { @Override public void run() { callBack.onFailed(tag,e); } }); } @Override public void onResponse(Call call, Response response) throws IOException { final String result = response.body().string(); Log.d("TT", "post: "+result); handler.post(new Runnable() { @Override public void run() { Object o; if (TextUtils.isEmpty(result)) { o = null; } else { o = GsonUtil.getInstance().fromJson(result, cls); } Log.d("TT", "o: "+o); callBack.onSuccess(tag, o); } }); } }); } }
Okhttp封装
最新推荐文章于 2018-08-29 14:20:33 发布