网络框架Kalle
Kalle开源地址:https://github.com/yanzhenjie/Kalle
Kalle文档地址:http://yanzhenjie.github.io/Kalle
普通Url get请求封装
public static void getData(String pUrl, KalleCustomConfiguration.ObjectCallback pObjectCallback) {
KalleCustomConfiguration.getKalle(pUrl, pObjectCallback);
}
import com.orhanobut.logger.Logger;
import com.yanzhenjie.kalle.Kalle;
import com.yanzhenjie.kalle.simple.Callback;
import com.yanzhenjie.kalle.simple.SimpleResponse;
/**
* @author 小红妹
* @time 19/05/05
*/
public class KalleCustomConfiguration {
public static void getKalle(String url, final ObjectCallback callback) {
Kalle.get(url)
.perform(new Callback<String, String>() {
/**
* 请求开始了,可以显示个dialog。
*/
@Override
public void onStart() {
}
/**
* 请求响应了。
* //UserInfo user = response.succeed();
* @param response
*/
@Override
public void onResponse(SimpleResponse<String, String> response) {
//判断数据是否为空
if(response.isSucceed()) {
// 业务成功,拿到业务成功的数据。
if (callback != null) {
callback.onSuccess(response.succeed());
}
} else {
// 业务失败,拿到业务失败的数据。
String message = response.failed();
Logger.e("服务器错误:" + message);
}
}
/**
* 请求发生异常了。
* @param e
*/
@Override
public void onException(Exception e) {
callback.onFailed(e.toString());
}
/**
* 请求被取消了。
*/
@Override
public void onCancel() {
}
/**
* 请求结束了,可以关闭之前显示的dialog。
*/
@Override
public void onEnd() {
}
});
}
public interface ObjectCallback {
/**
* 成功
* @param pS 返回数据
*/
void onSuccess(String pS);
/**
* 失败
* @param err 错误原因
*/
void onFailed(String err);
}
}
下载功能:
@OnClick(R.id.bt_details_download)
public void onViewClicked() {
Kalle.Download.get(mDownloadUrl)// /sdcard
.directory(getPath())// /RingTone
.fileName("我的眼里.mp3")
.perform(new Callback() {
@Override
public void onStart() {
// 请求开始了。
Logger.e("请求开始了");
}
@Override
public void onFinish(String path) {
// 请求完成,文件路径:path。
Logger.e("文件路径:"+path);
Toast.makeText(DetailsActivity.this, "文件路径:"+path, Toast.LENGTH_SHORT).show();
}
@Override
public void onException(Exception e) {
// 请求发生异常了。1.不存在这个文件夹,2.不支持大写英文包名,
Logger.e("请求发生异常了:"+e);
Toast.makeText(DetailsActivity.this, "请求发生异常了:"+e, Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
// 请求被取消了。
Logger.e("请求被取消了");
}
@Override
public void onEnd() {
// 请求结束了。
Logger.e("请求结束了");
Toast.makeText(DetailsActivity.this, "下载完成", Toast.LENGTH_SHORT).show();
}
});
}
/**
* 如何获取放置自己应用包名对应的扩展存储目录路径 ?
* App在手机上保存文件或者缓存数据时,应该遵守以下几点:
* 1.不要随意占用用户的内置存储。
* 2.不要随意在SD卡上新建目录,应该放置自己应用包名对应的扩展存储目录下,卸载App时可以被自动清除。
* 3.对占用的磁盘空间有上限,并按照一定的策略进行清除。
* @return
*/
public String getPath() {
String path = null;
File file = new File(Environment.getExternalStorageDirectory().toString()+File.separator+"RingTone");
if (!file.exists()) {
//文件夹不存在,就创建一个新文件夹
file.mkdir();
System.out.println("文件夹已经创建了");
Toast.makeText(DetailsActivity.this, "文件夹已经创建成功", Toast.LENGTH_SHORT).show();
path = file.getAbsolutePath();
} else {
path = file.getAbsolutePath();
System.out.println("文件已经存在");
Toast.makeText(DetailsActivity.this, "文件夹已经存在", Toast.LENGTH_SHORT).show();
}
return path;
}
更多功能后续补上。