自己整理的OkHttp工具——留存用

代码下载

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;
}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值