android okgo参数,Android OkGo基本操作

或许不是很全面,也都是从网上粘的,自己记下以后使用方便点。如有不对的地方 欢迎指教。

首先添加依赖:

implementation 'com.lzy.net:okgo:3.0.4'

设置初始化和全局配置:

public class App extends Application {

@Override

public void onCreate() {

super.onCreate();

//okGo网络框架初始化和全局配置

OkHttpClient.Builder builder = new OkHttpClient.Builder();

//builder.cookieJar(new CookieJarImpl(new SPCookieStore(this))); //使用sp保持cookie,如果cookie不过期,则一直有效

builder.cookieJar(new CookieJarImpl(new DBCookieStore(this)));//使用数据库保持cookie,如果cookie不过期,则一直有效

//builder.cookieJar(new CookieJarImpl(new MemoryCookieStore())); //使用内存保持cookie,app退出后,cookie消失

//设置请求头

HttpHeaders headers = new HttpHeaders();

headers.put("commonHeaderKey1", "commonHeaderValue1"); //header不支持中文,不允许有特殊字符

headers.put("commonHeaderKey2", "commonHeaderValue2");

//设置请求参数

HttpParams params = new HttpParams();

params.put("commonParamsKey1", "commonParamsValue1"); //param支持中文,直接传,不要自己编码

params.put("commonParamsKey2", "这里支持中文参数");

OkGo.getInstance().init(this) //必须调用初始化

.setOkHttpClient(builder.build()) //建议设置OkHttpClient,不设置会使用默认的

.setCacheMode(CacheMode.NO_CACHE) //全局统一缓存模式,默认不使用缓存,可以不传

.setCacheTime(CacheEntity.CACHE_NEVER_EXPIRE) //全局统一缓存时间,默认永不过期,可以不传

.setRetryCount(3) //全局统一超时重连次数,默认为三次,那么最差的情况会请求4次(一次原始请求,三次重连请求),不需要可以设置为0

.addCommonHeaders(headers) //全局公共头

.addCommonParams(params);

}

}

Post请求 使用的是json形式传参

Map map = new HashMap<>();

map.put("pageNum", 1);

map.put("pageSize", 10);

Gson gson = new Gson();

String json = gson.toJson(map);

OkGo.post(url) //输入请求地址

.tag(this)//销毁请求时候会用到

.upJson(json)//上传参数 如果没什么需求直接用 .params("key", "paramValue1")

.execute(new StringCallback() {

@Override

public void onSuccess(Response response) {

String body = response.body();

Gson bodyJson = new Gson();

MyBean myBean = bodyJson.fromJson(body, MyBean.class);

Log.d("MainActivity", "============" + myBean.getMsg());

Log.d("MainActivity", "============" + myBean.getData().getList().size());

}

@Override

public void onError(Response response) {

super.onError(response);

}

});

Get请求

OkGo.get(url)

.tag(this)//

.headers("header1", "headerValue1")//

.params("param1", "paramValue1")//

.execute(new StringCallback() {

@Override

public void onSuccess(Response response) {

//注意这里已经是在主线程了

String data = response.body();//这个就是返回来的结果

}

@Override

public void onError(Response response) {

super.onError(response);

}

});

文件上传

OkGo.post(url)

.tag(this)//

.headers("header1", "headerValue1")//

.headers("header2", "headerValue2")//

.params("param1", "paramValue1")//

.params("param2", "paramValue2")//

// .params("file1",new File("文件路径")) //这种方式为一个key,对应一个文件

// .params("file2",new File("文件路径"))

// .params("file3",new File("文件路径"))

.addFileParams("filename", files) // 这种方式为同一个key,上传多个文件

.execute(new JsonCallback() {

@Override

public void onStart(Request request) {

btnFormUpload.setText("正在上传中...");

}

@Override

public void onSuccess(Response response) {

btnFormUpload.setText("上传完成"+response.body());

}

@Override

public void onError(Response response) {

btnFormUpload.setText("上传出错");

}

@Override

public void uploadProgress(Progress progress) {

System.out.println("uploadProgress: " + progress);

}

});

文件下载

OkGo.get(url)

.tag(this)//

.headers("header1", "headerValue1")//

.params("param1", "paramValue1")//

.execute(new FileCallback("OkGo.apk") {

@Override

public void onStart(Request request) {

btnFileDownload.setText("正在下载中");

}

@Override

public void onSuccess(Response response) {

btnFileDownload.setText("下载完成"+response.body());

}

@Override

public void onError(Response response) {

btnFileDownload.setText("下载出错");

}

@Override

public void downloadProgress(Progress progress) {

System.out.println(progress);

}

});

请求销毁

@Override

protected void onDestroy() {

super.onDestroy();

//取消指定tag的请求

OkGo.getInstance().cancelTag(this);

//取消全部请求

OkGo.getInstance().cancelAll();

//取消OkHttpClient的全部请求

OkGo.cancelAll(new OkHttpClient());

OkGo.cancelTag(new OkHttpClient(), "且指定tag");

}

基本上就这些了,欢迎大家补充和指点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值