本文原创,转载请注明链接http://blog.kymjs.com/
KJFrameForAndroid下载地址:https://github.com/kymjs/KJFrameForAndroid

基础功能

KJHttp是专为解决Android中Http通信而产生的,它在请求和响应层面做到了全自动构建和解析,主要用于Android快速开发。
KJHttp自带了数据缓存功能,你所访问的Http数据都将在本地建立一个缓存,默认的缓存时间是5分钟,也就是5分钟以内相同的请求都不会经过网络,而是从本地缓存中直接读取。当然对于及时性要求较高的新闻类应用,你也可以关闭这个特性或者只需要将缓存时间设置成0就行了~
KJHttp支持JSON格式参数提交、AJAX方式的Form表单参数提交,文件与图片的上传下载,同时支持根据你的需求所发起的自定义Request。

工作原理

整个KJHttp工作流程:采用责任链设计模式,由三部分组成,类似设计可以类比Handle…Looper…MessageQueue
1. KJHttp负责不停向NetworkQueue(或CacheQueue实际还是NetworkQueue, 具体逻辑请查看 {@link CacheDispatcher})添加Request
2. 另一边由TaskThread不停从NetworkQueue中取Request并交给Network执行器(逻辑请查看 {@link NetworkDispatcher} ),
3. Network执行器将执行成功的NetworkResponse返回给TaskThead,并通过Request的定制方法 {@link Request#parseNetworkResponse()}封装成Response,最终交给分发器 {@link Delivery} 分发到主线程并调用HttpCallback相应的方法

基础用法

get或post以JSON传参的方式请求数据示例

 /** * 使用JSON提交参数而不是Form表单 */  private void jsonRequest() {      KJHttp kjh = new KJHttp();      HttpParams params = new HttpParams();      params.putHeaders("Cookie", "cookie不能告诉你");      //这里传递json字符串,(JSONObject可以调用toString方法转换)      params.putJsonParams(jsonObj.toString());      kjh.jsonPost(              "http://www.oschina.net/action/api/team_stickynote_batch_update",              params, new HttpCallBack() {                  @Override                  public void onSuccess(String t) {                      super.onSuccess(t);                      toast(t);                  }              });  }

get或post以AJAX方式请求JSON数据示例

  KJHttp kjh = new KJHttp();  HttpParams params = new HttpParams();   params.put("id", "1"); //传递参数  params.put("name", "kymjs");  //HttpCallback中有很多方法,可以根据需求选择实现  kjh.post("http://192.168.1.149/post_api", params, new HttpCallBack() {      @Override      public void onSuccess(String t) {          super.onSuccess(t);          ViewInject.longToast("请求成功");          KJLoger.debug("log:" + t.toString());      }      // ......      //还有更多,就不一一介绍了,大家可以参考API文档      // ......  });

文件上传支持多文件上传,支持传file对象,byte[]两种

  private void upload() {      HttpParams params = new HttpParams();      //可多次put,支持多文件上传      params.put("file", FileUtils.getSaveFile("KJLibrary", "logo.jpg"));      kjh.post("http://192.168.1.149/kymjs/hello.php", params,              new HttpCallBack() {                  @Override                  public void onSuccess(String t) {                      super.onSuccess(t);                      ViewInject.toast("success");                  }                  @Override                  public void onFailure(Throwable t, int errorNo,                          String strMsg) {                      super.onFailure(t, errorNo, strMsg);                      ViewInject.toast("error" + strMsg);                  }                  /** 还有更多实现... **/              });  }

文件下载与断点续传

 kjh.download("http://www.kymjs.com/app/kjblog.apk", "file.apk",new HttpCallBack() {        @Override        public void onSuccess(File f) {            super.onSuccess(f);            KJLoger.debug("success");            ViewInject.toast("toast");            mProgress.setProgress(mProgress.getMax());        }        @Override        public void onFailure(Throwable t, int errorNo,String strMsg) {            super.onFailure(t, errorNo, strMsg);            KJLoger.debug("onFailure");        }        /* onLoading 方法就只在文件下载时才会被回调 */        @Override        public void onLoading(long count, long current) {            super.onLoading(count, current);            mProgress.setMax((int) count);            mProgress.setProgress((int) current);            KJLoger.debug(count + "------" + current);        }    });

更多可配置方法

KJHttp kjh = new KJHttp();//取消一个请求kjh.cancle(url);//读取一个本地缓存数据kjh.getCache(url);//删除一个本地缓存kjh.removeCache(url);

高级设置

以上是基础用法,同样也支持自定义设置,你可以自定义数据缓存的方式,请求的优先级,请求数据的有效时间。同时支持根据你的需求所发起的自定义Request。
更多的使用,可以参考实际项目中的使用爱看博客客户端

版权声明:本文原创,转载请注明来自 http://kymjs.com/

更多相关文章

  1. Android抓取CSDN首页极客头条内容--网页数据抓取
  2. 使用android传感器自己编写温度计,湿度计 支持android5.0
  3. 用RxJava.Observable取代AsyncTask和AsyncTaskLoader-RxJava And
  4. [Android(安卓)NDK]添加C++11和C++14支持
  5. 【Java&Android开源库代码剖析】のAndroid-Universal-Image-Load
  6. Android网络通信库Volley简介(Google IO 2013)
  7. Android(安卓)让你的SeekBar 也支持长按事件
  8. 开免跨的游戏引擎
  9. 【Android】FragmentPagerAdapter与FragmentStatePagerAdapter使

随机推荐

  1. [置顶] android IPC通信(中)-ContentProvide
  2. android 内存优化(四) 性能优化-Systrace
  3. Android 原生系统给电信发短信出现乱码或
  4. 初识 Android(安卓)Native Development K
  5. 申请Android google map的apiKey
  6. Android版本和兼容情况
  7. 导入android工程出现:unable to get syste
  8. android中文api(89)――ViewManager
  9. Android Framework 之 SystemUI的启动流
  10. 对android:screenOrientation及android:c