Okhttp3 简单单例封装
来源:互联网 发布:淘宝买家秀大尺度下载 编辑:程序博客网 时间:2024/06/08 15:45
/** * User:bick * Created by Administrator-10-24 09 : 30 */import android.app.Activity;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.Map;/** * Ok封装工具类 */import java.util.concurrent.TimeUnit;import okhttp3.Call;import okhttp3.Callback;import okhttp3.FormBody;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;/** * Created by asus on 2017/10/15. */public class OkhttpUtils { public Activity context; //单例模式,声明 public static OkhttpUtils okhttpInstanse; public OkhttpUtils(Activity context) { this.context = context; } /** * 提供暴露方法 * */ public static OkhttpUtils getInstance(Activity context){ if(okhttpInstanse==null) { synchronized (OkhttpUtils.class){ if(okhttpInstanse==null) { okhttpInstanse=new OkhttpUtils(context); } } } return okhttpInstanse; } public void call(String okhttpMethod, String url, Map<String,Object> map, final OkhttpCall okhttpCall){ Request request=null; OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(new LogInterceptor()) .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(10, TimeUnit.SECONDS) .writeTimeout(10, TimeUnit.SECONDS) .retryOnConnectionFailure(false) .build(); if(map!=null&&map.entrySet().size()>0) { if (okhttpMethod.equalsIgnoreCase("GET")) { String mUrl = url + "?"; for (Map.Entry<String, Object> entry : map.entrySet()) { mUrl+=entry.getKey()+"="+entry.getValue()+"&"; } request=new Request.Builder().url(mUrl).get().build(); } else if(okhttpMethod.equalsIgnoreCase("POST")) { FormBody.Builder formBody=new FormBody.Builder(); for (Map.Entry<String, Object> entry : map.entrySet()) { formBody.add(entry.getKey(),entry.getValue().toString()); } request=new Request.Builder().url(url).post(formBody.build()).build(); } } if(request!=null) { client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { String s = e.toString(); okhttpCall.onFailure(call,e); } @Override public void onResponse(final Call call, Response response) throws IOException { //子线程加载数据 final StringBuffer result=new StringBuffer(); InputStream inputStream=null; BufferedReader bufferedReader=null; if(response!=null&&response.isSuccessful()) { inputStream = response.body().byteStream(); bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String line = ""; while ((line = bufferedReader.readLine()) != null) { result.append(line); } context.runOnUiThread(new Runnable() { @Override public void run() { okhttpCall.onResponse(call,result.toString()); } }); } } }); } } public interface OkhttpCall{ void onFailure(Call call,IOException e); void onResponse(Call call, String response); }}
// 网络拦截器
/** * User:Bcik * Created by Administrator-10-24 09 : 32 */public class LogInterceptor implements Interceptor { public static String TAG = "LogInterceptor"; @Override public Response intercept(Interceptor.Chain chain) throws IOException { Request request = chain.request(); long startTime = System.currentTimeMillis(); Response response = chain.proceed(chain.request()); long endTime = System.currentTimeMillis(); long duration=endTime-startTime; MediaType mediaType = response.body().contentType(); String content = response.body().string(); Log.d(TAG,"\n"); Log.d(TAG,"----------Start----------------"); Log.d(TAG, "| "+request.toString()); String method=request.method(); if("POST".equals(method)){ StringBuilder sb = new StringBuilder(); if (request.body() instanceof FormBody) { FormBody body = (FormBody) request.body(); for (int i = 0; i < body.size(); i++) { sb.append(body.encodedName(i) + "=" + body.encodedValue(i) + ","); } sb.delete(sb.length() - 1, sb.length()); Log.d(TAG, "| RequestParams:{"+sb.toString()+"}"); } } Log.d(TAG, "| Response:" + content); Log.d(TAG,"----------End:"+duration+"毫秒----------"); return response.newBuilder() .body(ResponseBody.create(mediaType, content)) .build(); }}
// 最后类名
OkhttpUtils.getInstance.call()
阅读全文
1 0
- Okhttp3 简单单例封装
- OkHttp3的简单封装
- 对OKHttp3的简单封装
- 对OkHttp3请求库简单封装
- okhttp3 使用详解及简单封装
- OkHttp3封装
- okhttp3封装
- OkHttp3封装
- 封装OkHttp3
- retrofit2.0+okhttp3+rxjava的封装(简单好用)
- 基于Okhttp3的简单封装,Bean,String数据返回
- Retrofit+okhttp3的简单封装实现网络请求和拦截
- okhttp3简单封装GET和POST请求工具类
- okHttp3自用封装
- okhttp3极简封装
- 封装OkHttp3框架
- OkHttp3 的封装
- OKHTTP3的封装
- PHP的引用传址和赋值传值以及unset()
- 如何下载windows镜像
- 关于异常处理的问题
- osmdroid API解读(四)
- js作用域
- Okhttp3 简单单例封装
- 还是不想就此而终
- JAVA SE基础知识(一)
- spring事务
- 1023. Have Fun with Numbers (20)
- 我男朋友是个程序员# 3 之《备份引发的血案》
- 10月24日 c语言 将数组a中的n个整数按相反顺序存放
- C++ XXTEA加密解密算法
- C++派生、友元类