自己手动封装的OKHTTP类
来源:互联网 发布:变色龙mac版 编辑:程序博客网 时间:2024/05/14 19:30
okhttputils工具类
public class OkHttpUtils { private Handler handler = new Handler(); public Handler getHandler(){ return handler; } //单例 private static OkHttpUtils okHttpUtils = new OkHttpUtils(); private OkHttpUtils(){}; public static OkHttpUtils getInstance(){ return okHttpUtils; } private OkHttpClient client; private void initOkHttpClient(){ if(client == null){ client = new OkHttpClient.Builder().build(); } } //公用的get请求方法 完成的功能不确定 public void doGet(String url, Callback callback){ initOkHttpClient(); Request request = new Request.Builder().url(url).build(); Call call = client.newCall(request); call.enqueue(callback); }}
方法类
public abstract class OnUiCallback implements Callback{ private Handler handler = OkHttpUtils.getInstance().getHandler(); public abstract void onFailed(Call call, IOException e); public abstract void onSuccess(String result) throws IOException; @Override public void onFailure(final Call call, final IOException e) { //该方式 存在问题 网络请求也跑到了主线程 待解决 //该方法就是把 线程post到handler所在的线程 handler.post(new Runnable() { @Override public void run() { onFailed(call, e); } }); } @Override public void onResponse(final Call call, final Response response) throws IOException { final String result = response.body().string(); //该方式 存在问题 网络请求也跑到了主线程 待解决 handler.post(new Runnable() { @Override public void run() { try { onSuccess(result); } catch (IOException e) { e.printStackTrace(); } } }); }}
post请求,
public class OkHttp3Utils { private static OkHttpClient okHttpClient = null; public OkHttp3Utils() { } private static OkHttpClient getOkHttpClient() { synchronized (OkHttp3Utils.class) { if (okHttpClient == null) { okHttpClient = new OkHttpClient(); } } return okHttpClient; } //上传文件 public static void loadFile(String url, File file,String fileName){ OkHttpClient okHttpClient = getOkHttpClient(); //设置文件类型 RequestBody requestBody = RequestBody.create(MediaType.parse("application/octet-stream"),file); //设置请求体 RequestBody body = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("image",fileName,requestBody) .build(); //请求方式 Request request = new Request.Builder().url(url).post(body).build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { Log.i("成功","成功"); } }); } /** * 1.接口地址 * 2.接口回调 */ public static void doGet(String url,Callback callback){ OkHttpClient okHttpClient = getOkHttpClient(); Request request = new Request.Builder().url(url).build(); okHttpClient.newCall(request).enqueue(callback); } /** * 1.地址 * 2.接口回调 * 3.请求体 */ public static void doPost(String url, Map<String,String> map,Callback callback){ OkHttpClient okHttpClient = getOkHttpClient(); FormBody.Builder builder = new FormBody.Builder(); //遍历map集合 设置请求体 for (String mapKey : map.keySet()){ builder.add(mapKey,map.get(mapKey)); } //设置请求方式 Request request = new Request.Builder().url(url).post(builder.build()).build(); //执行请求方式 接口回调 okHttpClient.newCall(request).enqueue(callback); } /** *1.下载地址 */ public static void doDown(String url,Callback callback){ OkHttpClient okHttpClient = getOkHttpClient(); Request build = new Request.Builder().url(url).build(); okHttpClient.newCall(build).enqueue(callback); }}
阅读全文
0 0
- 自己手动封装的OKHTTP类
- 手动封装OKhttp
- 自己简单的封装一个OKHttp工具类
- OKHttp的封装类
- Android架构系列-封装自己的okhttp
- OKHttp的简单封装类
- OKhttp封装的工具类 可以拷到自己项目中直接用
- 如何封装自己的网络框架(RxJava+okHttp+Retrofit)
- 自己项目中的 OKHttp的封装与使用
- 非常简单的OKhttp封装工具类
- okhttp传输封装的工具类
- Okhttp网络请求的封装类
- Android Okhttp工具类的封装
- 一个简单明了的OKhttp封装类
- 带拦截器的okhttp封装类
- okhttp的简单封装
- okhttp的封装
- okHttp的封装
- oracle 取物化视图刷新时间戳
- java常用类库---System类
- struts2-resultType
- Hibernate基础2
- MNIST手写体识别入门程序整理
- 自己手动封装的OKHTTP类
- vim 编辑
- 【Spark Mllib】决策树,随机森林——预测森林植被类型
- 容错性测试的测试点
- struts2-OGNL
- Android_广播机制
- Hibernate一对多双向,多对多双向,排序
- 转载:Java环境配置
- Python见面