Okhttp框架搭建及拦截器
2017-10-15 18:44
323 查看
本代码是由借鉴他人博客并加以改进所成
拦截器需要添加依赖:
代码
拦截器需要添加依赖:
compile 'com.squareup.okhttp3:logging-interceptor:3.9.0'
代码
public class OkhttpUtils { //声明客户端 private OkHttpClient client; //防止多个线程同时访问所造成的安全隐患 private volatile static OkhttpUtils utils; //定义提交类型Json private static final MediaType JSON = MediaType.parse("application/json;charset=utf-8"); //定义提交类型String private static final MediaType STRING = MediaType.parse("text/x-markdown;charset=utf-8"); //子线程 private Handler handler; //构造方法 private OkhttpUtils(){ HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); logging.setLevel(HttpLoggingInterceptor.Level.BODY); client=new OkHttpClient.Builder() .addInterceptor(logging) .build(); handler=new Handler(Looper.getMainLooper()); } //单例模式 public static OkhttpUtils getInstance(){ if(utils==null){ //线程同步锁 synchronized (OkhttpUtils.class){ if(utils==null){ utils=new OkhttpUtils(); utils=utils; } } } return utils; } //网络请求 public void syncJsonStringByUrl(String url, final FuncJsonString callback){ Request request=new Request.Builder().url(url).build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Log.i("TAG", "解析失败"); } @Override aa60 public void onResponse(Call call, Response response) throws IOException { if(response!=null&&response.isSuccessful()){ OnSuccessJsonString(response.body().string(),callback); } } }); } //post提交表单数据 public void sendDataForClicent(String url, Map<String,String> params, final Class clazz, final FuncJsonString callback){ //表单对象,包含input开始的操作 FormBody.Builder from=new FormBody.Builder(); if(params != null && !params.isEmpty()){ for (Map.Entry<String,String> entry:params.entrySet()){ //装载表单值 from.add(entry.getKey(),entry.getValue()); } } RequestBody body=from.build(); //post提交 Request request=new Request.Builder().url(url).post(body).build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Log.i("TAG", "解析失败"); } @Override public void onResponse(Call call, Response response) throws IOException { if(response!=null&&response.isSuccessful()){ Gson gson=new Gson(); final BaseBean b= (BaseBean) gson.fromJson(response.body().string(),clazz); OnSuccessJsonString(b.code,callback); } } }); } //返回json字符串的接口 public interface FuncJsonString{ void onResponse(String result); } //请求的返回是json字符串 private void OnSuccessJsonString(final String jsonValue, final FuncJsonString callback){ handler.post(new Runnable() { @Override public void run() { if(callback!=null){ try { callback.onResponse(jsonValue); }catch (Exception e){ } } } }); } }
相关文章推荐
- RxAndroid+RxJava+Gson+retrofit+okhttp初步搭建android网络请求框架
- OkHttp框架加拦截器
- Android用Okhttp搭建自己的网络框架
- 安卓网络访问框架okhttp环境搭建
- 第五篇 基于.net搭建热插拔式web框架(拦截器---请求管道)
- Retrofit2+OkHttp3+RxJava搭建网络框架
- 从零开始搭建一个主流项目框架(三)—RxJava2.0+Retrofit2.0+OkHttp
- Android中是用okhttp和son搭建项目框架是,这两个怎么联系在一起
- 浅谈retrofit2.1+okhttp3 搭建MVP框架
- OkHttp框架中拦截器设计精髓之责任链模式
- 搭建SpringMVC框架、控制器、传值、拦截器
- Retrofit2+OkHttp3+RxJava搭建网络框架
- 使用okhttp androidannotaion springandroid 等框架搭建请求网络的框架
- Android中是用okhttp和son搭建项目框架是,这两个怎么联系在一起
- iOS框架搭建(MVC,自定义TabBar)--微博搭建为例
- Java - 搭建 Spring MVC 框架
- play 框架 环境搭建
- springcloud-eureka集群-整合feign框架自定义拦截器
- 一起学ORBSLAM2(3)system框架搭建
- Python网络爬虫1 ---- windows下搭建爬虫框架scrapy