import android.os.Handler; import android.os.Message; import android.util.Log; import com.google.gson.Gson; import java.io.IOException; import java.util.Map; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; /** * Created by xsj on 2017/11/9. */ public class OkhttpUtils { private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); } }; //单列模式 双重锁 private static volatile OkhttpUtils instance = null; public static OkhttpUtils getInstance() { if (instance == null) { synchronized (OkhttpUtils.class) { if (instance == null) { instance = new OkhttpUtils(); } } } return instance; } public void postData(String url, Map<String,String> map, final Class clazz, final Pvem pv){ StringBuffer buffer = new StringBuffer(); buffer.append(url); //如果存在 if(buffer.indexOf("?")!=-1){ //如果?不在最后一位 if(buffer.indexOf("?")!=buffer.length()-1){ buffer.append("&"); } }else { buffer.append("?"); } //meiyou for (Map.Entry<String,String> en : map.entrySet()){ buffer.append(en.getKey()) .append("=") .append(en.getValue()) .append("&"); } buffer.deleteCharAt(buffer.lastIndexOf("&")); OkHttpClient client = new OkHttpClient.Builder().build(); Request request = new Request.Builder().get().url(buffer.toString()).build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { pv.OnNetFaild(e.getMessage()); } @Override public void onResponse(Call call, Response response) throws IOException { String string = response.body().string(); final Object o=new Gson().fromJson(string,clazz); handler.post(new Runnable() { @Override public void run() { pv.OnNetSuccess(o); } }); } }); } }
OkHttp简单封装Demo
最新推荐文章于 2020-12-03 20:48:06 发布