导入依赖
okgo依赖:
implementation ‘com.lzy.net:okgo:3.0.4’
底层OkHttp
格式
get、下载、获取图片:
OkGo:.<泛型>get.execute(new 泛型CallBack);
post:OkGo.<泛型>get(url).params(map),服filename).execute(new 泛型CallBack);
上传:OkGo.<泛型>get(url).isMultipart(true).params(“file”,new File(parh),服filename).execute(new 泛型CallBack);
代码
get请求
private void get() {
OkGo.<String>get("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1")//网址
.execute(new StringCallback() {//执行并使用StringCallBack得到结果
@Override
public void onSuccess(Response<String> response) {
String body = response.body();
Toast.makeText(MainActivity.this, ""+body, Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Response<String> response) {
String body = response.body();
Toast.makeText(MainActivity.this, ""+body, Toast.LENGTH_SHORT).show();
}
});
}
post请求
private void post() {
HashMap<String, String> map = new HashMap<>();
map.put("limit","20");
map.put("page","1");
OkGo.<String>post("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&")
.params(map)
.execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
Toast.makeText(MainActivity.this, ""+response.body(), Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Response<String> response) {
super.onError(response);
Toast.makeText(MainActivity.this, ""+response.body(), Toast.LENGTH_SHORT).show();
}
});
}
下载SD卡
private void down() {
OkGo.<File>get("http://i.kinja-img.com/gawker-media/image/upload/s--B7tUiM5l--/gf2r69yorbdesguga10i.gif")
.execute(new FileCallback("/sdcard/Pictures","okgo.gif") { //路径 , 下载到sd卡的名字
@Override
public void onSuccess(Response<File> response) {
Toast.makeText(MainActivity.this, "下载成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Response<File> response) {
super.onError(response);
Toast.makeText(MainActivity.this, "下载失败", Toast.LENGTH_SHORT).show();
}
@Override
public void onFinish() {
super.onFinish();
Toast.makeText(MainActivity.this, "下载完毕", Toast.LENGTH_SHORT).show();
}
@Override
public void downloadProgress(final Progress progress) {
super.downloadProgress(progress);
seekBar.setProgress((int) (progress.fraction*100));
}
});
}
上传服务器
private void updata() {
OkGo.<String>post("http://169.254.232.20/yu_hfs/")
.isMultipart(true)
.params("file",new File("/sdcard/Music/xiazai.mp3"),"youhebuke.mp3")
.execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
Toast.makeText(MainActivity.this, "上传成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Response<String> response) {
super.onError(response);
Toast.makeText(MainActivity.this, "上传失败", Toast.LENGTH_SHORT).show();
}
@Override
public void onFinish() {
super.onFinish();
Toast.makeText(MainActivity.this, "上传完毕", Toast.LENGTH_SHORT).show();
}
@Override
public void uploadProgress(Progress progress) {
super.uploadProgress(progress);
seekBar.setProgress((int) (progress.fraction*100));
}
});
}
get请求图片展示imageview
private void getimage() {
OkGo.<Bitmap>get("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1562587162663&di=58b961a5726901f5d3b97f8924ddc189&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201811%2F10%2F20181110102045_jwqny.jpg")
.execute(new BitmapCallback() {
@Override
public void onSuccess(Response<Bitmap> response) {
Bitmap bitmap = response.body();
imageView.setImageBitmap(bitmap);
}
});
}
自定义封装AbsCallback
package com.example.day4_okgo;
import com.google.gson.Gson;
import com.lzy.okgo.callback.AbsCallback;
import okhttp3.Response;
// 抽象
public abstract class JsonCallBack<T> extends AbsCallback<T> {
Class<T> tClass;
//传入的class
public JsonCallBack(Class<T> tClass) {
this.tClass = tClass;
}
@Override
public T convertResponse(Response response) throws Throwable {
String string = response.body().string();
T t = new Gson().fromJson(string, tClass);
return t;
}
}
MainActivity:
//自定义泛型
OkGo.<Bean> get("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1")
.execute(new JsonCallBack<Bean>(Bean.class) {
@Override
public void onSuccess(Response<Bean> response) {
Bean body = response.body();
// List<Bean.DataBean> data = body.getData();
Log.i("yu", "onSuccess: "+body);
}
});