您的位置:首页 > 理论基础 > 计算机网络

自己整理的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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: