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");
}
基本上就這些了,歡迎大家補充和指點
總結
以上是生活随笔為你收集整理的android okgo参数,Android OkGo基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: enternet.exe是安全的进程吗
- 下一篇: android volume挂载流程,A