OkHTTPUTILS的封装
来源:互联网 发布:linux删除oracle用户 编辑:程序博客网 时间:2024/05/20 23:59
使用之前导入依赖
compile 'com.squareup.okhttp3:okhttp:3.9.1'
然后进行封装
package com.bwie.newjingd.utils;import android.os.Handler;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.FormBody;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;/** * author:Created by WangZhiQiang on 2017/12/5. */public class OKHttpUtils { private static OKHttpUtils okHttpUtils; private static Handler handler = new Handler(); //私有化构造方法 public OKHttpUtils() { } /** * 获取OKhttpClient实例化 */ public static OKHttpUtils getInstance() { if (null == okHttpUtils) { synchronized (OKHttpUtils.class) { if (null == okHttpUtils) { okHttpUtils = new OKHttpUtils(); } } } return okHttpUtils; } /** * 封装的异步Get请求 */ public void doGet(String path, Map<String, String> map, final OKHttpCallBack okHttpCallBack) { //创建一个字符串容器 StringBuilder sb = null; if (map.size() == 0) { if (null == sb) { sb = new StringBuilder(); sb.append(path); } } else { for (String key : map.keySet()) { if (null == sb) { sb = new StringBuilder(); sb.append(path); sb.append("?"); } else { sb.append("&"); } sb.append(key).append("=").append(map.get(key)); } }// StringBuilder sb = new StringBuilder();// sb.append(path).append("?");// for(Map.Entry entry:map.entrySet()){// sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&");// }//// sb.deleteCharAt(sb.lastIndexOf("&")); //Log.e("WWWWW",sb.toString()); OkHttpClient okHttpClient = new OkHttpClient.Builder() .addInterceptor(new CommonParamsInterceptor()) .build(); Request request = new Request.Builder() .url(sb.toString()) .get() .build(); //OKHttp 网络 Call call = okHttpClient.newCall(request); //异步请求 call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { //请求失败 okHttpCallBack.onFailed(e.getMessage()); } @Override public void onResponse(Call call, final Response response) throws IOException { final String str = response.body().string(); //Log.i("fff", "sssss"+str + ""); //请求成功 handler.post(new Runnable() { @Override public void run() { okHttpCallBack.onSuccess(str); } }); } }); }}
shixianjiekou
package com.bwie.newjingd.utils;/** * Created by 老北城 on 2017/12/11. */public interface OKHttpCallBack { void onSuccess(String str); void onFailed(String message);}
lanjieqi
package com.bwie.newjingd.utils;import java.io.IOException;import okhttp3.FormBody;import okhttp3.Interceptor;import okhttp3.Request;import okhttp3.RequestBody;import okhttp3.Response;
/** * 应用层拦截器 */public class CommonParamsInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { //得到原始的请求对象 Request request = chain.request();//原始的请求项 //得到请求方式 Get 、Post String method = request.method(); if("GET".equals(method)){ //取出原始的url String oldUrl = request.url().toString(); System.out.println("原始的url : "+oldUrl); String newUrl = oldUrl + "&source=android"; System.out.println("一个新的请求url : "+newUrl); //构建新的request request = new Request.Builder() .url(newUrl) .build(); }else if("POST".equals(method)){ //1,取出旧的参数以及url FormBody body = (FormBody) request.body(); //取出旧的Url String oldUrl = request.url().toString(); //构建一个新的FormBody FormBody.Builder newFormBody = new FormBody.Builder(); for (int i = 0; i < body.size();i++){ String key = body.name(i);//keywors String value = body.value(i);//value newFormBody.add(key,value); } //公共参数 newFormBody.add("source","android"); //新构建的reqeust request = new Request.Builder() .url(oldUrl) .post(newFormBody.build()) .build(); //2.构建请求体 //3.重新执行 } return chain.proceed(request); }}
OK没封装的使用
package com.bwie.newjingd.model;import android.os.Handler;import com.bwie.newjingd.bean.Car_Select;import com.bwie.newjingd.bean.Lunbotu;import com.bwie.newjingd.bean.TuijianBean;import com.bwie.newjingd.presenter.Car_Select_p;import com.bwie.newjingd.utils.OKHttpCallBack;import com.bwie.newjingd.utils.OKHttpUtils;import com.google.gson.Gson;import java.util.HashMap;import java.util.List;import okhttp3.Call;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;/** * Created by 老北城 on 2017/12/17. */public class Car_Model_Select { private final Handler handler=new Handler(); public void select(final Car_Select_p car_select_p){ new Thread() { @Override public void run() { super.run(); try { //HttpClient请求 OkHttpClient okHttpClient = new OkHttpClient(); Request request = new Request.Builder() .get()//请求方式 .url("http://120.27.23.105/product/getCarts?source=android&uid=88")//请求网址 .build();//创建,开始请求 //准备发送请求 Call call = okHttpClient.newCall(request); //执行请求 Response response = call.execute(); //得到请求结果 String result = response.body().string(); Gson gson = new Gson(); Car_Select car_select = gson.fromJson(result, Car_Select.class); final List<Car_Select.DataBean> data = car_select.getData(); handler.post(new Runnable() { @Override public void run() { car_select_p.onSuccess(data); } }); } catch (Exception e) { e.printStackTrace(); } } }.start(); }}
阅读全文
0 0
- OkHttpUtils进一步的封装
- OkHttpUtils的封装
- OkHTTPUTILS的封装
- 已封装了的OkHttpUtils
- okhttputils封装
- OkHttpUtils - 封装了okhttp的网络框架
- OkHttpUtils - 封装了okhttp的网络框架
- OkHttpUtils - 封装了okhttp的网络框架
- OkHttpUtils - 封装了okhttp的网络框架
- 超简单的okHttpUtils封装(下)
- okhttpUtils的简单使用以及封装
- 封装封装OkHttpUtils
- Okhttputils终极封装
- 简单okHttpUtils封装
- 鸿洋大神封装的okhttputils拿走不谢!
- 基于OkHttpUtils网络请求的二次封装(简单版)
- OkHttpUtils已封装好的工具类+依赖,直接使用
- NetCallBack 泛型封装 + okhttputils封装
- RecyclerView添加Main
- bzoj 1013 [JSOI2008]球形空间产生器sphere
- python基础知识
- lvs为何不能完全替代DNS轮询
- Wireshark抓包过滤器设置
- OkHTTPUTILS的封装
- 如何了解 <![CDATA[ ]]>的作用?
- bzoj1221 [HNOI2001] 软件开发(费用流)
- C++实验23
- 【Ajax】Ajax总结
- Muduo 笔记
- CentOS7.4 最简安装FTP
- Most Powerful (状态dp)
- F a^b