RequestConfig config = new RequestConfig.Builder(this).logEnable(true).cacheMode(RequestConfig.HttpCacheMode.NO_CACHE)
.baseUrl("http://ip.taobao.com/").cacheTimeInSeconds(3 * 60).connectionTimeOut(30 *1000).build();
HttpRequestAgent.getInstance().init(config);
RequestParams params = new RequestParams.Builder().requestParams(requestParams).url("service/getIpInfo.php").cacheMode(RequestConfig.HttpCacheMode.ALWAYS_CACHE).post().build();
HttpRequestAgent.getInstance().executeRequest(params, callback);
ALWAYS_CACHE,//缓存时间内,不发请求,直接返回缓存结果
CACHE_FIRST,//优先返回缓存结果,然后发送请求。(总共返回二次数据)
FAILED_SHOW_CACHE,//请求失败后展示缓存
CACHE_WHEN_NO_NETWORK //没有网络的时候展示缓存
RequestConfig config = new RequestConfig.Builder(this).logEnable(true).cacheMode(RequestConfig.HttpCacheMode.NO_CACHE)
.baseUrl("http://ip.taobao.com/").addInterceptor(new HandlerInterceptor() {
@Override
public boolean preHandler(RequestParams params) {
//TODO 请求之前的拦截 返回值决定是否继续请求
return true;
}
@Override
public void postSuccessHandler(RequestParams params, int statusCode, Map<String, List<String>> headers) {
//TODO 请求成功的拦截
}
@Override
public void postFailedHandler(IOException exception) {
//TODO 请求失败的拦截器
}
@Override
public void afterCompletion(RequestParams params, ResponseData<String> responseData) {
//TODO 请求逻辑处理完毕的回调
}
}).cacheTimeInSeconds(3 * 60).connectionTimeOut(30 *1000).build());
ObjectCallback<DemoResultBean<Location>> objCallback = new ObjectCallback<DemoResultBean<Location>>(new TypeReference<DemoResultBean<Location>>(){}) {
@Override
protected void onResponse(ResponseData<DemoResultBean<Location>> responseData) {
if (responseData.isSuccess()){
if (responseData.isFromCache()){
tvCacheResult.setText(responseData.toString());
}else{
tvRequestResult.setText(responseData.toString());
}
}else{
Toast.makeText(MainActivity.this, responseData.getDescription(), Toast.LENGTH_LONG).show();
}
}
@Override
public void onProgress(long bytesWritten, long totalSize) {
super.onProgress(bytesWritten, totalSize);
//TODO you can update ui here
}
}
支持设置文件路径,直接下载生成为文件
fileCallback = new FileCallback(downloadFile.getAbsolutePath()) {
@Override
protected void onResponse(ResponseData<File> responseData) {
File file = responseData.getData();
if (responseData.isSuccess()){
if (responseData.isFromCache()){
tvCacheResult.setText(responseData.toString() + "\n文件最后修改时间" + new Date(file.lastModified()) + "\n文件路径:" + file.getAbsolutePath());
}else{
tvRequestResult.setText(responseData.toString() + "\n文件最后修改时间" + new Date(file.lastModified()) + "\n文件路径:" + file.getAbsolutePath());
}
}else{
Toast.makeText(MainActivity.this, responseData.getDescription(), Toast.LENGTH_LONG).show();
}
}
@Override
public void onProgress(long bytesWritten, long totalSize) {
super.onProgress(bytesWritten, totalSize);
}
};
HttpRequestAgent.getInstance().interruptRequestByTag(tag1, tag2, tag3);//取消设置这三个tag的请求
HttpRequestAgent.getInstance().interruptAllRequest();//取消所有请求
项目下载:https://github.com/jclick/JWHttpWrapper/archive/master.zip
热门源码