org.xutils.http.loader.StringLoader
import android.text.TextUtils;
import org.xutils.cache.DiskCacheEntity;
import org.xutils.common.util.IOUtil;
import org.xutils.http.RequestParams;
import org.xutils.http.request.UriRequest;
import java.io.InputStream;
/**
* @author 注释者:王教成
* @version 注释版:1.0.0
* 字符串加载器
*/
/*package*/ class StringLoader extends Loader<String> {
private String charset = "UTF-8";//创建UTF-8字符集字符串
private String resultStr = null;//声明结果字符串
/**
* 创建新实例
* @return 返回字符串加载器
*/
@Override
public Loader<String> newInstance() {
return new StringLoader();
}
/**
* 设置请求参数
* @param params 请求参数
*/
@Override
public void setParams(final RequestParams params) {
if (params != null) {
String charset = params.getCharset();//如果请求参数非空,从请求参数获取字符集
if (!TextUtils.isEmpty(charset)) {
this.charset = charset;//如果字符集非空则赋值
}
}
}
/**
* 加载输入流
* @param in 输入流
* @return 返回字符串
* @throws Throwable 抛出异常
*/
@Override
public String load(final InputStream in) throws Throwable {
resultStr = IOUtil.readStr(in, charset);//从输入流读取字符串
return resultStr;//返回结果字符串
}
/**
* 加载Uri请求参数
* @param request Uri请求参数
* @return 返回字符串
* @throws Throwable 抛出异常
*/
@Override
public String load(final UriRequest request) throws Throwable {
request.sendRequest();//发送请求
return this.load(request.getInputStream());//通过Uri请求参数获取输入流,调用本类加载输入流方法
}
/**
* 加载,从磁盘缓存实体
* @param cacheEntity 磁盘缓存实体
* @return 返回字符串或null
* @throws Throwable 抛出异常
*/
@Override
public String loadFromCache(final DiskCacheEntity cacheEntity) throws Throwable {
if (cacheEntity != null) {
return cacheEntity.getTextContent();//如果磁盘缓存实体非空,获取文本内容
}
return null;
}
/**
* 保存到缓存实体
* @param request Uri请求参数
*/
@Override
public void save2Cache(UriRequest request) {
saveStringCache(request, resultStr);//保存字符串缓存
}
}