2018-3-16 

接着昨晚的项目,在基础上封装一个okhttp3的网络框架,封装比较快,想到什么就写了。每个项目的需求不一样,先弄基本的东西。



然后接着HttpManager 网络请求的封装。

package com.sys.lostpro.mvplost.net.http;import android.content.Context;import android.util.Log;import com.sys.lostpro.mvplost.model.eventbusmsg.ProgressInfo;import org.greenrobot.eventbus.EventBus;import java.io.IOException;import java.util.Map;import java.util.concurrent.TimeUnit;import okhttp3.Call;import okhttp3.Callback;import okhttp3.FormBody;import okhttp3.HttpUrl;import okhttp3.Interceptor;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;import okhttp3.logging.HttpLoggingInterceptor;public class HttpManager {    private volatile static HttpManager httpInstance = null;    private Context context;    private OkHttpClient.Builder okBuilder;    private HttpManager() {        okBuilder = new OkHttpClient.Builder();        okBuilder.connectTimeout(15, TimeUnit.SECONDS);        okBuilder.readTimeout(60, TimeUnit.SECONDS);        okBuilder.writeTimeout(60, TimeUnit.SECONDS);        //配置拦截器。        HttpLoggingInterceptor logging = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {            @Override            public void log(String message) {                Log.e("httpmanager", message);            }        });        logging.setLevel(HttpLoggingInterceptor.Level.BODY);        okBuilder.addInterceptor(logging);        okBuilder.addInterceptor(new ParemsInterceptor());    }    private static class ParemsInterceptor implements Interceptor {        @Override        public Response intercept(Chain chain) throws IOException {            Request oldrequest = chain.request();            HttpUrl.Builder builder = oldrequest.url()                    .newBuilder()                    .setEncodedQueryParameter("showapi_appid", "14494")                    .setEncodedQueryParameter("showapi_sign", "86b42577b7b84307bdc68c1be582bfe3");            // 新的请求            Request newRequest = oldrequest.newBuilder()                    .method(oldrequest.method(), oldrequest.body())                    .url(builder.build())                    .build();            Response response = chain.proceed(newRequest);            return response;        }    }    public static HttpManager getInStance() {        if (httpInstance == null) {            synchronized (HttpManager.class) {                if (httpInstance == null) {                    httpInstance = new HttpManager();                }            }        }        return httpInstance;    }    //异步post请求    public void async_post(String url, Map params) {        EventBus.getDefault().post(new ProgressInfo(1));        FormBody.Builder formbuilder = new FormBody.Builder();        for (String key : params.keySet()) {            formbuilder.add(key, params.get(key));        }        final Request request = new Request.Builder().url(url).post(formbuilder.build()).build();        Call mCall = okBuilder.build().newCall(request);        mCall.enqueue(new Callback() {            @Override            public void onFailure(Call call, IOException e) {                EventBus.getDefault().post(new ProgressInfo(2));            }            @Override            public void onResponse(Call call, Response response) throws IOException {                EventBus.getDefault().post(new ProgressInfo(2));            }        });    }    //异步get请求    public void async_get() {    }    //上传    public void async_upload() {    }    //下载    public void async_download() {    }}

一般都是 请求封装,然后gson 解析的,弄一个callback泛型出来,这个是基本的套路。迟下再弄,反正测试了post 请求没有问题,写这个东西,主要是想试下Bmob 的第三方那个即时通讯技术。

之前搭建的RxJava2+RxAndroid 。。。那个·框架不兼容 bmob的,最新版,然后提工单,那里的大佬叫我降级处理,我就感觉有点不爽。。。然后就换个项目试下吧。



刚验证了,也是兼容不了,唉,bmob 用的rx1 版本,感觉不是很兼容。有无其他大佬板试过这个的。。。。次次集成最新版本,就显示jar冲突,但是查看又没有jar冲突。还是集成下环信或者融云这个更加好吧。。。。












更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  3. android JNI 入门
  4. Android运行异常一:token android.os.BinderProxy@438e7108 is no
  5. Android(安卓)项目贪吃蛇最初版本实现。
  6. Android上使用jspf插件框架的方法
  7. Android框架之路——ToolBar的使用
  8. Spring For Android初体验
  9. [android]在eclipse中项目经常出现异常解决办法

随机推荐

  1. Android SeekBar的使用
  2. 基于Android P 背光流程
  3. Android 获取天气预报
  4. Android onTouch事件
  5. Android从asset中获取drawable
  6. Android常用功能实例 如IMEI号
  7. Android静默安装相关
  8. Android(安卓)学习路线总结
  9. android dialog 不变暗
  10. Android Desigin Library