Android快速開發(fā)架構(gòu)PlanA奢驯,一周一個(gè)APP申钩,持續(xù)維護(hù)中!
Android快速開發(fā)架構(gòu)PlanA(一),船新版本的BaseActivity
Android快速開發(fā)架構(gòu)PlanA(二)瘪阁,簡(jiǎn)單粗暴的路由管理PRouter
Android快速開發(fā)架構(gòu)PlanA(三)撒遣,你一定會(huì)用上的工具類
Android快速開發(fā)架構(gòu)PlanA(四),網(wǎng)絡(luò)請(qǐng)求篇管跺,劃重點(diǎn)(必考)
Android快速開發(fā)架構(gòu)PlanA(五)义黎,文件上傳下載了解一下
Android快速開發(fā)架構(gòu)PlanA(六),抱歉豁跑,這些自定義控件真的可以讓你為所欲為
Android快速開發(fā)架構(gòu)PlanA(七)廉涕,隱藏技能:PhotoBrowse圖片瀏覽
Android快速開發(fā)架構(gòu)PlanA(八),手滑搞了個(gè)萬能適配器CommonAdapter
1.怎么說艇拍?
??PlanA架構(gòu)集成第四篇狐蜕,PlanA中網(wǎng)絡(luò)請(qǐng)求的使用,相信很多開發(fā)者在Android的開發(fā)中都有自己的網(wǎng)絡(luò)請(qǐng)求體系淑倾,更適合自己馏鹤,這里的網(wǎng)絡(luò)請(qǐng)求方面也做了高度封裝,針對(duì)多種情況娇哆,可以選擇使用湃累,使用簡(jiǎn)單,方便碍讨。
??PlanA中的網(wǎng)絡(luò)請(qǐng)求主要是Retrofit2+Okhttp3+Rxjava2的封裝治力,不需要了解底層的實(shí)現(xiàn)思路,你只需一行代碼即可實(shí)現(xiàn)高效勃黍,快速的網(wǎng)絡(luò)請(qǐng)求宵统。
2.初始化
-
在Application的onCreate中初始化baseUrl
//初始化方式一 RetrofitClient.getInstance().init(new HttpConfig.Builder().setBaseUrl("http://192.168.1.123:8080/").build()); //初始化方式二 commonHeaderMap為公共header 可以為null RetrofitClient.getInstance().init(new HttpConfig.Builder().setBaseUrl("http://192.168.1.123:8080/").build(),commonHeaderMap);
-
如果你需要配置其他項(xiàng),則如下:
//初始化 HttpConfig.Builder builder = new HttpConfig.Builder(); builder.setBaseUrl("http://192.168.1.123:8080/"); builder.setDefaultConnectTimeout(12000);//設(shè)置連接超時(shí)時(shí)間:毫秒 builder.setDefaultReadTimeout(12000);//設(shè)置讀取超時(shí)時(shí)間:毫秒 builder.setDefaultWriteTimeout(12000);//設(shè)置寫入超時(shí)時(shí)間:毫秒 RetrofitClient.getInstance().init(builder.build());
3.網(wǎng)絡(luò)請(qǐng)求(以get為例覆获,post亦是如此)
簡(jiǎn)單請(qǐng)求
// taskId為當(dāng)前請(qǐng)求任務(wù)Id马澈,后續(xù)取消網(wǎng)絡(luò)請(qǐng)求會(huì)用上,不取消則可以不接收
String taskId = RetrofitClient.getInstance()
.get("api/getUserByName")
.param("name", "kevin")
.execute(new ResCallback<ResponseBody>() {
@Override
public void onResponse(ResponseBody responseBody) {
Log.d("debug","請(qǐng)求成功");
}
@Override
public void onError(Throwable e) {
Log.e("error",e.getLocalizedMessage());
}
});
// 取消網(wǎng)絡(luò)請(qǐng)求
RetrofitClient.getInstance().cancelRequest(taskId);
完整請(qǐng)求
1)普通參數(shù)
String taskId = RetrofitClient.getInstance()
.get("api/getUserByName") // post也是一樣的
.header("cus-xxx","xxx")
.headers(headerMap)
.param("key1","value1")
.params(paramMap)
.execute(new ResCallback<ResponseBody>() {
@Override
public void onResponse(ResponseBody responseBody) {
Log.d("debug","請(qǐng)求成功");
}
@Override
public void onError(Throwable e) {
Log.e("error",e.getLocalizedMessage());
}
});
2)Json參數(shù)
String taskId = RetrofitClient.getInstance()
.get("api/getUserByName") // post也是一樣的
.header("cus-xxx","xxx")
.headers(headerMap)
.upJson(paramMap) // 如果調(diào)用upJson的話弄息,會(huì)自動(dòng)添加Content-Type:application/json;charset=utf-8
.execute(new ResCallback<ResponseBody>() {
@Override
public void onResponse(ResponseBody responseBody) {
Log.d("debug","請(qǐng)求成功");
}
@Override
public void onError(Throwable e) {
Log.e("error",e.getLocalizedMessage());
}
});
PlanA網(wǎng)絡(luò)請(qǐng)求框架持續(xù)優(yōu)化中痊班,有疑問或者改進(jìn)意見請(qǐng)留言↓↓↓