封装OKHttp的get和post请求模版
来源:互联网 发布:手机函数绘图软件 编辑:程序博客网 时间:2024/05/16 07:35
public class HttpUtils { private static final String TAG = "HttpUtils"; private static volatile HttpUtils instance; public static Handler handler = new Handler(); private HttpUtils() { } public static HttpUtils getInstance() { if (null == instance) { synchronized (HttpUtils.class) { if (instance == null) { instance = new HttpUtils(); } } } return instance; } /** * 对外提供的get请求 * * @param url * @param map * @param callback * @param cls */ public void get(String url, Map<String, String> map, final Callback callback, final Class cls) { // 对url和参数做一下拼接处理// http://www.baidu.com/login?name=zs StringBuffer sb = new StringBuffer(); sb.append(url); // 如果存在? if (sb.indexOf("?") != -1) { // 如果?不在最后一位 if (sb.indexOf("?") != sb.length() - 1) { sb.append("&"); } } else { sb.append("?"); } 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.i(TAG, "get url: " + sb); OkHttpClient client = new OkHttpClient(); final Request request = new Request.Builder() .get() .url(sb.toString()) .build(); Call call = client.newCall(request); call.enqueue(new okhttp3.Callback() { @Override public void onFailure(Call call, final IOException e) { Log.e(TAG, "onFailure: " + e.getCause().getStackTrace() + e.getMessage()); handler.post(new Runnable() { @Override public void run() { callback.onFailed(e); } }); } @Override public void onResponse(Call call, Response response) throws IOException { String result = response.body().string(); Log.i(TAG, "onResponse: " + result); final Object o = GsonUtils.getInstance().fromJson(result, cls); handler.post(new Runnable() { @Override public void run() { callback.onSuccess(o); } }); } }); } /** * 封装的post请求 * * @param url * @param map * @param callback * @param cls */ public void post(String url, Map<String, String> map, final Callback callback, final Class cls) { OkHttpClient client = new OkHttpClient(); FormBody.Builder builder = new FormBody.Builder(); for (Map.Entry<String, String> entry : map.entrySet()) { builder.add(entry.getKey(), entry.getValue()); } FormBody body = builder.build(); final Request request = new Request.Builder() .url(url) .post(body) .build(); Call call = client.newCall(request); call.enqueue(new okhttp3.Callback() { @Override public void onFailure(Call call, final IOException e) { Log.e(TAG, "onFailure: " + e.getCause().getStackTrace() + e.getMessage()); handler.post(new Runnable() { @Override public void run() { callback.onFailed(e); } }); } @Override public void onResponse(Call call, Response response) throws IOException { String result = response.body().string(); Log.i(TAG, "onResponse: " + result); final Object o = GsonUtils.getInstance().fromJson(result, cls); handler.post(new Runnable() { @Override public void run() { callback.onSuccess(o); } }); } }); } }
阅读全文
0 0
- 封装OKHttp的get和post请求模版
- OkHttp get post请求的封装
- OKhttp的get请求和post请求
- Okhttp和Retrofit的get,post请求
- Okhttp的post和get请求数据
- OkHttp get和post封装
- OKHttp的get和post请求封装方法(编写步骤.txt)
- OkHttp get请求 和post请求
- 简单封装okhttp的get和post方法
- OKhttp的异步get和post烦人封装
- okhttp网络框架的使用get和post请求
- okHttp post&get请求
- okhttp get post请求
- OkHttp的Get和Post
- Ajax get请求和post请求的封装
- java使用httpclient封装post请求和get的请求
- 简述OkHttp的使用:get、post请求
- OkHttp的POST、GET请求方式
- keras实现BiLSTM+CNN+CRF文字标记NER
- 如何将自己的Java项目部署到外网
- Core Java知识点
- CTEX并排插入图片
- Intellij IDEA 使用svn非常详细的说明
- 封装OKHttp的get和post请求模版
- java创建型设计模式——抽象工厂模式
- HTTPS协议详解(四):TLS/SSL握手过程
- 【bzoj1800】[Ahoi2009]fly 飞行棋
- GreenDao
- zabbix 监控统计从数据库中获取想要的数据。
- HTTPS协议详解(五):HTTPS性能与优化
- jQuery对象与DOM对象之间的转换
- 深入分析Parquet列式存储格式