自己整理的OkHttp工具——留存用
2016-04-27 10:25
771 查看
代码下载
OkHttp的github地址:https://github.com/square/okhttp
网络请求工具集,使用方法:
1、需要第三方jar包有okhttp.jar、okio.jar、fastjson.jar;
2、使用前需要进行初始化,建议在程序入口application中进行初始化,代码如下:
List<Part> commomParams = new ArrayList<>();
Headers commonHeaders = new Headers.Builder().build();
List<Interceptor> interceptorList = new ArrayList<>();
OkHttpFinalConfiguration.Builder builder = new OkHttpFinalConfiguration.Builder()
.setCommenParams(commomParams)
.setCommenHeaders(commonHeaders)
.setTimeout(Configs.NET_TIMEOUT)
.setInterceptors(interceptorList)
.setDebug(Configs.ENABLE_LOG);
OkHttpFinal.getInstance().init(builder.build());
3、RequestParams是请求体,HttpRequest是请求操作。
RequestParams params = new RequestParams(this);//创建请求体
params.addFormDataPart("page", page);//添加参数(key,value)
。。。//增加参数。。。
//下面的是请求操作,可以在返回的回调中直接操作UI
HttpRequest.post(url, params, BaseHttpRequestCallback<T>() {
//请求回掉,可以选择性的实现里面的方法,完成想要的操作。
//一般需要实现方法有onSuccess(T t) 、onFinish() 、onFailure()
});
4、现在已经实现的BaseHttpRequestCallback有以下几类,基本已经包含大多数操作
(1)JsonArrayHttpRequestCallback
(2)JsonObjectHttpRequestCallback
(3)FileDownloadCallback
(4)StringHttpRequestCallback
5、在实际使用中,一般和后台交互都有一个基础信息返回,例如说返回的json如下:
{
"status": "SUCCESS",
"message": "验证码验证成功",
"datavalue": []
}
我们创建一个请求结果的基本返回信息类:
public class BaseApiResponse<T> {
private String status;
private String message;
private T datavalue;
//。。。
setter和getter
//。。。
}
然后自己创建自己定制的请求体,但是必须继承BaseHttpRequestCallback,如下:
public class MyBaseHttpRequestCallback<T extends BaseApiResponse> extends BaseHttpRequestCallback<T>{
@Override
protected void onSuccess(T t) {
if(t.getstatus.equals("SUCCESS")){
//成功啦将数据取出来,出入一个方法中
onMySuccess(t);
}else{
//失败啦
}
}
protected void onMySuccess(T t) {。。。}
}
并且这里使用的是泛型,可以创建一个返回的实例类,直接继承BaseApiResponse,例如:
public class NewResponse extends BaseApiResponse<MyInfo>{
}
这样在使用的时候,在进行请求操作的时候可以这样:
HttpRequest.post(url, params, MyBaseHttpRequestCallback<NewResponse>() {
@Override
public void onMySuccess(NewResponse newResponse) {
//可以取newResponse中的数据啦,直接转换成类,操作方便。
MyInfo = newResponse.getDatavalue
}
});
6、文件下载回掉有FileDownloadCallback
HttpRequest.download(url, 下载后保存地址(File格式), new FileDownloadCallback() {
@Override public void onStart() {
}
@Override
public void onProgress(int progress, long networkSpeed) {
//progress:进度;
//networkSpeed:网速
}
@Override public void onFailure() {
//失败
}
@Override public void onDone() {
//成功
}
});
}
7、结束请求,okhttp可以结束指定的请求,实现方案是在baseactivity中为每个activity分配一个key,
在结束activity的同时,将请求同时也结束,需要继承HttpCycleContext。(参照BaseActivity):
public class BaseActivity extends FragmentActivity implements HttpCycleContext{
protected final String HTTP_TASK_KEY = "HttpTaskKey_" + hashCode();
。。。。。。
@Override
protected void onDestroy() {
。。。。。。
HttpTaskHandler.getInstance().removeTask(HTTP_TASK_KEY);
}
@Override
public String getHttpTaskKey() {
return HTTP_TASK_KEY;
}
}
OkHttp的github地址:https://github.com/square/okhttp
网络请求工具集,使用方法:
1、需要第三方jar包有okhttp.jar、okio.jar、fastjson.jar;
2、使用前需要进行初始化,建议在程序入口application中进行初始化,代码如下:
List<Part> commomParams = new ArrayList<>();
Headers commonHeaders = new Headers.Builder().build();
List<Interceptor> interceptorList = new ArrayList<>();
OkHttpFinalConfiguration.Builder builder = new OkHttpFinalConfiguration.Builder()
.setCommenParams(commomParams)
.setCommenHeaders(commonHeaders)
.setTimeout(Configs.NET_TIMEOUT)
.setInterceptors(interceptorList)
.setDebug(Configs.ENABLE_LOG);
OkHttpFinal.getInstance().init(builder.build());
3、RequestParams是请求体,HttpRequest是请求操作。
RequestParams params = new RequestParams(this);//创建请求体
params.addFormDataPart("page", page);//添加参数(key,value)
。。。//增加参数。。。
//下面的是请求操作,可以在返回的回调中直接操作UI
HttpRequest.post(url, params, BaseHttpRequestCallback<T>() {
//请求回掉,可以选择性的实现里面的方法,完成想要的操作。
//一般需要实现方法有onSuccess(T t) 、onFinish() 、onFailure()
});
4、现在已经实现的BaseHttpRequestCallback有以下几类,基本已经包含大多数操作
(1)JsonArrayHttpRequestCallback
(2)JsonObjectHttpRequestCallback
(3)FileDownloadCallback
(4)StringHttpRequestCallback
5、在实际使用中,一般和后台交互都有一个基础信息返回,例如说返回的json如下:
{
"status": "SUCCESS",
"message": "验证码验证成功",
"datavalue": []
}
我们创建一个请求结果的基本返回信息类:
public class BaseApiResponse<T> {
private String status;
private String message;
private T datavalue;
//。。。
setter和getter
//。。。
}
然后自己创建自己定制的请求体,但是必须继承BaseHttpRequestCallback,如下:
public class MyBaseHttpRequestCallback<T extends BaseApiResponse> extends BaseHttpRequestCallback<T>{
@Override
protected void onSuccess(T t) {
if(t.getstatus.equals("SUCCESS")){
//成功啦将数据取出来,出入一个方法中
onMySuccess(t);
}else{
//失败啦
}
}
protected void onMySuccess(T t) {。。。}
}
并且这里使用的是泛型,可以创建一个返回的实例类,直接继承BaseApiResponse,例如:
public class NewResponse extends BaseApiResponse<MyInfo>{
}
这样在使用的时候,在进行请求操作的时候可以这样:
HttpRequest.post(url, params, MyBaseHttpRequestCallback<NewResponse>() {
@Override
public void onMySuccess(NewResponse newResponse) {
//可以取newResponse中的数据啦,直接转换成类,操作方便。
MyInfo = newResponse.getDatavalue
}
});
6、文件下载回掉有FileDownloadCallback
HttpRequest.download(url, 下载后保存地址(File格式), new FileDownloadCallback() {
@Override public void onStart() {
}
@Override
public void onProgress(int progress, long networkSpeed) {
//progress:进度;
//networkSpeed:网速
}
@Override public void onFailure() {
//失败
}
@Override public void onDone() {
//成功
}
});
}
7、结束请求,okhttp可以结束指定的请求,实现方案是在baseactivity中为每个activity分配一个key,
在结束activity的同时,将请求同时也结束,需要继承HttpCycleContext。(参照BaseActivity):
public class BaseActivity extends FragmentActivity implements HttpCycleContext{
protected final String HTTP_TASK_KEY = "HttpTaskKey_" + hashCode();
。。。。。。
@Override
protected void onDestroy() {
。。。。。。
HttpTaskHandler.getInstance().removeTask(HTTP_TASK_KEY);
}
@Override
public String getHttpTaskKey() {
return HTTP_TASK_KEY;
}
}
相关文章推荐
- iOS开发网络篇—文件的上传
- Referenced file contains errors (http://struts.apache.org/dtds/struts-2.0.dtd)
- HTTP无状态协议和Connection:Keep-Alive容易犯的误区
- iOS开发网络篇—发送GET和POST请求(使用NSURLSession)
- TCP/IP详解 卷一 ---------ARP地址解析协议
- 搭建本地yum源(http方式) on Red Hat Enterprise Linux Server
- OSI七层与TCP/IP五层网络架构详解
- 谈谈HTTP协议中的短轮询、长轮询、长连接和短连接
- 网络存储
- 高级UIKit-09(TCPSocket发送文件、上传和下载) - 回读(IOS)
- Golang httptls 通信,带证书请求小实例
- 中断和网络驱动程序
- HttpURLConnection工具类 支持Gzip
- .Net开源网络爬虫Abot介绍
- Unity的数据序列化与反序列化用于网络传输
- 从贝叶斯方法谈到贝叶斯网络
- IPerf——网络测试工具介绍与源码解析(4)
- 网络干货
- 网络编程学习——线程(三)
- 传统企业为什么要做网络营销?