php http请求框架,迄今最好的Http请求框架

基础功能

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。

更多的使用,可以参考实际项目中的使用爱看博客客户端

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
简介: 本框架是在Netroid的基础之上进行了封装,节省了其中配置的过程和一些不必要的操作 主要进行文本请求和图片请求,图片请求都进行了缓存(内存缓存和sd卡缓存)的封装,sd卡缓存时间可自行更改. 文本请求可传入解析的泛型clazz,即可返回解析后的clazz对象进行数据 操作,如果不需要进行数据解析,可通过另一种方式获取原生的string; 单图请求,单图请求可执行对本地asset文件夹,sd卡,http三种请求模式.只需传入相应的路径即可; 多图请求,多图请求主要是针对listview这种图文混排模式而生,能快速加载图片并实现缓存,不需要考虑 图片错位问题.只需传入相应的url即可完成全部功能. 使用说明: 1:在新创建的Manifest.xml中application中申明: <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:name="com.aqs.application.UApplication" > 并初始化Const.init();此处的初始化主要是对内存缓存,SD卡缓存大小,缓存时间等进行设置,如果不初始化,则按使用默认配置; 2:依赖HttpAqs-library或者jar包 3:通过公有方法进行网络请求,示例如下: >文本请求: >解析后的文本请求: HttpRequest.reqquest(int,String,Parse,Class){....}; >原生string文本请求: HttpRequest.getString(String,AqsString){...} >单张图片请求: HttpRequest.setImage(ImageView,String,int,int){...} >多张图片请求: 可使用AQSImageView控件来加载图片;特别是针对listview图文混排 实现方法: >在布局中添加 >在代码中 av.setImageUrl(url);

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值