android okgo参数,Android OkGo基本操作
或許不是很全面,也都是從網(wǎng)上粘的,自己記下以后使用方便點(diǎn)。如有不對(duì)的地方 歡迎指教。
首先添加依賴:
implementation 'com.lzy.net:okgo:3.0.4'
設(shè)置初始化和全局配置:
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
//okGo網(wǎng)絡(luò)框架初始化和全局配置
OkHttpClient.Builder builder = new OkHttpClient.Builder();
//builder.cookieJar(new CookieJarImpl(new SPCookieStore(this))); //使用sp保持cookie,如果cookie不過(guò)期,則一直有效
builder.cookieJar(new CookieJarImpl(new DBCookieStore(this)));//使用數(shù)據(jù)庫(kù)保持cookie,如果cookie不過(guò)期,則一直有效
//builder.cookieJar(new CookieJarImpl(new MemoryCookieStore())); //使用內(nèi)存保持cookie,app退出后,cookie消失
//設(shè)置請(qǐng)求頭
HttpHeaders headers = new HttpHeaders();
headers.put("commonHeaderKey1", "commonHeaderValue1"); //header不支持中文,不允許有特殊字符
headers.put("commonHeaderKey2", "commonHeaderValue2");
//設(shè)置請(qǐng)求參數(shù)
HttpParams params = new HttpParams();
params.put("commonParamsKey1", "commonParamsValue1"); //param支持中文,直接傳,不要自己編碼
params.put("commonParamsKey2", "這里支持中文參數(shù)");
OkGo.getInstance().init(this) //必須調(diào)用初始化
.setOkHttpClient(builder.build()) //建議設(shè)置OkHttpClient,不設(shè)置會(huì)使用默認(rèn)的
.setCacheMode(CacheMode.NO_CACHE) //全局統(tǒng)一緩存模式,默認(rèn)不使用緩存,可以不傳
.setCacheTime(CacheEntity.CACHE_NEVER_EXPIRE) //全局統(tǒng)一緩存時(shí)間,默認(rèn)永不過(guò)期,可以不傳
.setRetryCount(3) //全局統(tǒng)一超時(shí)重連次數(shù),默認(rèn)為三次,那么最差的情況會(huì)請(qǐng)求4次(一次原始請(qǐng)求,三次重連請(qǐng)求),不需要可以設(shè)置為0
.addCommonHeaders(headers) //全局公共頭
.addCommonParams(params);
}
}
Post請(qǐng)求 使用的是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) //輸入請(qǐng)求地址
.tag(this)//銷毀請(qǐng)求時(shí)候會(huì)用到
.upJson(json)//上傳參數(shù) 如果沒(méi)什么需求直接用 .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請(qǐng)求
OkGo.get(url)
.tag(this)//
.headers("header1", "headerValue1")//
.params("param1", "paramValue1")//
.execute(new StringCallback() {
@Override
public void onSuccess(Response response) {
//注意這里已經(jīng)是在主線程了
String data = response.body();//這個(gè)就是返回來(lái)的結(jié)果
}
@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("文件路徑")) //這種方式為一個(gè)key,對(duì)應(yīng)一個(gè)文件
// .params("file2",new File("文件路徑"))
// .params("file3",new File("文件路徑"))
.addFileParams("filename", files) // 這種方式為同一個(gè)key,上傳多個(gè)文件
.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("上傳出錯(cuò)");
}
@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("下載出錯(cuò)");
}
@Override
public void downloadProgress(Progress progress) {
System.out.println(progress);
}
});
請(qǐng)求銷毀
@Override
protected void onDestroy() {
super.onDestroy();
//取消指定tag的請(qǐng)求
OkGo.getInstance().cancelTag(this);
//取消全部請(qǐng)求
OkGo.getInstance().cancelAll();
//取消OkHttpClient的全部請(qǐng)求
OkGo.cancelAll(new OkHttpClient());
OkGo.cancelTag(new OkHttpClient(), "且指定tag");
}
基本上就這些了,歡迎大家補(bǔ)充和指點(diǎn)
總結(jié)
以上是生活随笔為你收集整理的android okgo参数,Android OkGo基本操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: enternet.exe是安全的进程吗
- 下一篇: android volume挂载流程,A