OkHttp工具类简单封装运用
2017-09-21 20:09
337 查看
简单的OK封装运用
如需别的功能 ,请另寻他处
导入依赖:
//OkHttp工具类
创建接口
MainActivity运用
如需别的功能 ,请另寻他处
导入依赖:
compile 'com.google.code.gson:gson:2.8.1' compile 'com.squareup.okhttp3:okhttp:3.2.0'
//OkHttp工具类
private static ReentrantLock lock = new ReentrantLock(); private static volatile HttpUtils httpUtils; private final OkHttpClient okHttpClient; private Handler handler = new Handler(Looper.getMainLooper()); private static HashMap<String,String> headers = new HashMap<>(); static{ headers.put("client_type","android"); } private HttpUtils() { okHttpClient = new OkHttpClient(); } public static HttpUtils getInstance() { if (httpUtils == null) { lock.lock(); try { if (httpUtils == null) { httpUtils = new HttpUtils(); } } finally { lock.unlock(); } } return httpUtils; } public void doPost(String url, HashMap<String, String> params, final Class clazz, final OnNetListener onNetListener) { FormBody.Builder builder = new FormBody.Builder(); // for (Map.Entry<String, String> entry : params.entrySet()) { // builder.add(entry.getKey(), entry.getValue()); // } // RequestBody formBody = builder.build(); Request request = new Request.Builder() .url(url) .build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) { handler.post(new Runnable() { @Override public void run() { if (onNetListener!=null){ onNetListener.onError(e); } } }); } @Override public void onResponse(Call call, final Response response) throws IOException { handler.post(new Runnable() { @Override public void run() { if (onNetListener!=null){ // onNetListener.onSuccess(response); try { BaseBeen baseBena = (BaseBeen) new Gson().fromJson(response.body().string(), clazz); if (baseBena.getCode()==200){ onNetListener.onSuccess(baseBena); }else if(baseBena.getCode()==300){ //做相应的操作 } } catch (IOException e) { } } } }); } }); } /** * GET 请求 * * @param url * @param headerMap * @param onNetListener */ public void doGet(String url, HashMap<String, String> headerMap, final OnNetListener onNetListener) { if (headerMap == null || headerMap.size() == 0) { throw new RuntimeException("headerMap is null !!!!"); } Request.Builder builder = new Request.Builder(); builder.url(url); headers.putAll(headerMap); for (Map.Entry<String, String> entry : headers.entrySet()) { builder.addHeader(entry.getKey(), entry.getValue()); } Request request = builder.build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) { handler.post(new Runnable() { @Override public void run() { onNetListener.onError(e); } }); } @Override public void onResponse(Call call, final Response response) throws IOException { //默认返回结果在子线程当中 handler.post(new Runnable() { @Override public void run() { onNetListener.onSuccess(response); } }); } }); }
创建接口
public interface OnNetListener { public void onSuccess(Response response); public void onSuccess(BaseBeen baseBean); public void onError(IOException e); }
MainActivity运用
HttpUtils.getInstance().doPost(url, null, BaseBeen.class, new OnNetListener() { @Override public void onSuccess(Response response) { } @Override public void onSuccess(BaseBeen baseBean) { } @Override public void onError(IOException e) { } });
相关文章推荐
- 非常简单的OKhttp封装工具类
- 简单的封装了一个OKHttp网络请求工具类,直接粘贴进去调用使用,很方便
- 自己简单的封装一个OKHttp工具类
- okhttp3简单封装GET和POST请求工具类
- 今天根据别人的代码简单的封装了一个将java bean生成xml的一个工具类,运用了反射和泛型,重用性高。
- Okhttp的简单二次封装
- Retrofit+RxJava+RxAndroid+OkHttp简单封装
- Log工具类(简单封装)
- okhttp的简单介绍(二)之简单封装
- Gson简单过滤工具类封装
- 以OKHttp为基础封装网络请求工具类
- 学习笔记 Tianmao 篇 OkHttp 网络的使用的简单封装 获取Json用GSON来解析
- 基于Okhttp3的简单封装,Bean,String数据返回
- okhttp封装工具类
- Android -- OkHttp的简单使用和封装
- 一个简单封装的jdbc工具类
- 简单的封装Okhttp
- OkHttp简单封装
- 利用JavaCompiler编译java文件(一个简单封装的工具类)
- Okhttp工具类封装