一句话概括,OkHttpUtils一个专注于让网络请求更简单的网络请求框架,对于任何形式的网络请求只需要一行代码。
使用方法:
- Json数据
新建一个JsonCallBack类,用于处理返回的Json数据
public abstract class JsonCallback<T> extends Callback<T> {
//需要Gson工具解析成某一个类
private Class<T> mClass;
//使用谷歌提供的Gson工具解析
private Gson mGson;
public JsonCallback(Class<T> clazz){
mClass = clazz;
mGson = new Gson();
}
@Override
public T parseNetworkResponse(Response response) throws IOException {
try {
String jsonString = response.body().string();
return mGson.fromJson(jsonString, mClass);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
申请网络请求
private void getMusic(final int offset) {
OkHttpUtils.get().url(Constants.BASE_URL)
//addParams("键","值")
.addParams(Constants.PARAM_METHOD, Constants.METHOD_GET_MUSIC_LIST)
.addParams(Constants.PARAM_TYPE, mListInfo.getType())
.addParams(Constants.PARAM_SIZE, String.valueOf(Constants.MUSIC_LIST_SIZE))
.addParams(Constants.PARAM_OFFSET, String.valueOf(offset))
.build()
.execute(new JsonCallback<JsonOnlineMusicList>(JsonOnlineMusicList.class) {
@Override
public void onResponse(JsonOnlineMusicList response) {
//请求成功后回调
//这时就获得了JsonOnlineMusicList的对象response
}
@Override
public void onError(Call call, Exception e) {
//请求失败后回调
}
});
}
2.下载文件
if (!TextUtils.isEmpty(mJOnlineMusic.getLrclink()) && !lrcFile.exists()) {
OkHttpUtils.get().url(mJOnlineMusic.getLrclink()).build()
.execute(new FileCallBack(FileUtils.getLrcDir(), lrcFileName) {
@Override
public void inProgress(float progress, long total) {
}
@Override
public void onResponse(File response) {
}
@Override
public void onError(Call call, Exception e) {
}
@Override
public void onAfter() {
//请求结束后回调,无论网络请求成功还是失败,都会调用,可以用于关闭显示对话框
}
});
}
3.下载Bitmap
OkHttpUtils.get().url(picUrl).build()
.execute(new BitmapCallback() {
@Override
public void onResponse(Bitmap bitmap) {
}
@Override
public void onError(Call call, Exception e) {
});
}