get 参数拼接 如下接口
localhost:8080/uav/plotting/page/app?pageNum=1&pageSize=10&appId=e3c59e28-2032-4ddf-a762-7cec96f772a4&orgId=65&plottingType=point
@GET("https:/uav/plotting/page/app")
Observable allPointList(@Query("pageNum") String pageNum, @Query("pageSize") String pageSize, @Query("appId") String appId, @Query("orgId") String orgId, @Query("itemCode") String itemCode, @Query("plottingType") String plottingType);
get 直接拼接url 如下接口
localhost:8080/uav/uav/info/bind/5YSZK9P0020BKU,1581F5FHB229F00201W1
@Header("Authorization") 是我项目的token 认证授权
@GET("/uav/uav/info/bind/{aircraftSn}")
Observable getBindOrgStutas(@Header("Authorization") String authorization, @Path("aircraftSn") String aircraftSn);
psot 参数拼接 如下接口https://test.uav.gafss.work/uav/uav/info/bind
@Headers({"Content-Type: application/json"})
@POST("/uav/uav/info/bind")
Observable bindTissue(@Header("Authorization") String authorization, @Body String params);
HashMap hashMap = new HashMap<>();
hashMap.put("appId", appId);
hashMap.put("orgId", orgId);
hashMap.put("uavNum", uavNum);
hashMap.put("itemCode", itemCode);
String params = new Gson().toJson(hashMap);
return NetWorkManager.getRequest().bindTissue(authorization,params);
delete参数拼接如下接口 localhost:8080/uav/plotting?ids=a667d699-4995-4370-8ab8-908da163047f
@Headers({"Content-Type: application/json"})
@POST("/uav/plotting/update/app")
Observable editPoint(@Body String params);
put 参数拼接如下接口口 localhost:8080/ /uav/v2/titem/item/{uav_num}
{
"itemCode": "一风基分质布联",
"inviteCode": "出了放指",
"appId": "自听没个",
"orgId": -2464645433090784
}
@PUT("/uav/v2/titem/item")
Observable addProject(@Header("Authorization") String authorization,@Body String params);
下面是给服务器传集合 或者 json
public class BindTissueModel implements BindTissueContact.Model {
@Override
public Observable>> bingTissue(String authorization, String appId, String orgId, String uavNum, String itemCode) {
HashMap hashMap = new HashMap<>();
hashMap.put("appId", appId);
hashMap.put("orgId", orgId);
hashMap.put("uavNum", uavNum);
hashMap.put("itemCode", itemCode);
String params = new Gson().toJson(hashMap);
return NetWorkManager.getRequest().bindTissue(authorization,params);
}
@Override
public Observable>> cutOrgItem(String authorization, ArrayList list) {
HashMap hashMap = new HashMap<>();
hashMap.put("bindDevices", list);
String params = new Gson().toJson(hashMap);
return NetWorkManager.getRequest().cutOrgItem(authorization,params);
}
}
接下来是完整的
NetWorkManager.class
package com.bjdj.droneflyV5.net;
import static androidx.core.view.OneShotPreDrawListener.add;
import androidx.annotation.NonNull;
import com.bjdj.droneflyV5.common.FlyApplication;
import com.bjdj.droneflyV5.net.interceptor.DownloadInterceptor;
import com.bjdj.droneflyV5.net.request.RequestApi;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import kotlin.Pair;
import me.jessyan.retrofiturlmanager.RetrofitUrlManager;
import okhttp3.Headers;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Protocol;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.converter.scalars.ScalarsConverterFactory;
/**
* Created by Zaifeng on 2018/2/28.
* API初始化类
*/
public class NetWorkManager {
private static NetWorkManager mInstance;
private static Retrofit retrofit;
private static volatile RequestApi request = null;
public static NetWorkManager getInstance() {
if (mInstance == null) {
synchronized (NetWorkManager.class) {
if (mInstance == null) {
mInstance = new NetWorkManager();
}
}
}
return mInstance;
}
/**
* 初始化必要对象和参数
*/
public void init() {
// List protocols = new ArrayList() {{
add(Protocol.HTTP_1_1); // <-- The only protocol used
// add(Protocol.HTTP_2);
// }};
// 初始化okhttp
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
// 构建 OkHttpClient 时,将 OkHttpClient.Builder() 传入 with() 方法,进行初始化配置
OkHttpClient client = RetrofitUrlManager.getInstance()
.with(new OkHttpClient.Builder())
.readTimeout(40, TimeUnit.SECONDS)
.addInterceptor(logging)
.build();
Gson gson = new GsonBuilder()
.setLenient()
.create();
// 初始化Retrofit
retrofit = new Retrofit.Builder()
.client(client)
// .baseUrl(RequestApi.HOST)
.baseUrl(Objects.requireNonNull(FlyApplication.getInstance().getApiHost().getHost()))
.addConverterFactory(ScalarsConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
//自定义OkHttpClient对象
// GsonConverterFactory.create(gson))
// RxHttpPlugins.init(client)
// .setDebug(true,true,5) ; //是否开启调试模式、是否分段打印、打印json数据缩进空格数量
// .setCache(File, long,CacheMode) //配置缓存目录,最大size及缓存模式
// .setExcludeCacheKeys(String...) //设置一些key,不参与cacheKey的组拼
// .setResultDecoder(Function) //设置数据解密/解码器,非必须
// .setConverter(IConverter) //设置全局的转换器,非必须
// .setOnParamAssembly(Consumer); //设置公共参数/请求头回调
}
public static RequestApi getRequest() {
if (request == null) {
synchronized (RequestApi.class) {
request = retrofit.create(RequestApi.class);
}
}
return request;
}
}
/**
* 绑定设备
*/
@Headers({"Content-Type: application/json"})
@POST("/uav/uav/info/bind")
Observable>> bindTissue(@Header("Authorization") String authorization, @Body String params);
创建接口 view层
public interface BindTissueContact {
interface Model {
Observable>> bingTissue(String authorization, String appId, String orgId, String uavNum, String itemCode);
}
interface View extends BaseView {
@Override
void showLoading();
@Override
void hideLoading();
@Override
void onError(String errMessage);
void getBindTissue(Response> bindTissue);
}
interface Presenter {
void bingTissue(String authorization, String appId, String orgId, String uavNum, String itemCode);
}
}
创建model层
public class BindTissueModel implements BindTissueContact.Model {
@Override
public Observable>> bingTissue(String authorization, String appId, String orgId, String uavNum, String itemCode) {
HashMap hashMap = new HashMap<>();
hashMap.put("appId", appId);
hashMap.put("orgId", orgId);
hashMap.put("uavNum", uavNum);
hashMap.put("itemCode", itemCode);
String params = new Gson().toJson(hashMap);
return NetWorkManager.getRequest().bindTissue(authorization,params);
}
}
创建p层
public class BindTissuePresenter implements BindTissueContact.Presenter {
private final BindTissueModel bindTissueModel;
private final BindTissueContact.View view;
public BindTissuePresenter(BindTissueModel bindTissueModel, BindTissueContact.View view) {
this.bindTissueModel = bindTissueModel;
this.view = view;
}
@Override
public void bingTissue(String authorization, String appId, String orgId, String uavNum, String itemCode) {
bindTissueModel.bingTissue(authorization,appId,orgId,uavNum,itemCode)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer>>() {
@Override
public void onSubscribe(Disposable d) {
view.showLoading();
}
@Override
public void onNext(Response> orgProject) {
view.getBindTissue(orgProject);
}
@Override
public void onError(Throwable e) {
view.onError(e.getMessage());
}
@Override
public void onComplete() {
view.hideLoading();
}
});
}
}
接下来就是 activity 或者 fragment 实现view 层 接口
public class BindOrgActivity extends AppCompatActivity implements BindTissueContact.View {
public static final String TAG = "BindOrgActivity";
private BindTissuePresenter bindTissuePresenter;
private String accessToken;
private String aircraftSn, uavNum, isLogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RxBarTool.hideStatusBar(this);
setContentView(R.layout.activity_bind_org);
initview();
initData();
}
private void initview() {
}
private void initData() {
bindTissuePresenter = new BindTissuePresenter(new BindTissueModel(), this);
bindTissuePresenter.bingTissue(accessToken, appId, orgId, aircraftSn, itemCode);
}
@Override
public AutoDisposeConverter bindAutoDispose() {
return null;
}
@Override
public void showLoading() {
}
@Override
public void hideLoading() {
}
@Override
public void onError(String errMessage) {
}
/*
* 绑定组织
* */
@SuppressLint("ResourceAsColor")
@Override
public void getBindTissue(Response> bindTissue) {
if (bindTissue.getCode() == 200) {
Toast.makeText(this, "绑定成功", Toast.LENGTH_SHORT).show();
status.setText("已绑定");
status.setTextColor(R.color.black);
}
}
}
BaseView
public interface BaseView {
/**
* 显示加载中
*/
void showLoading();
/**
* 隐藏加载
*/
void hideLoading();
/**
* 数据获取失败
* @param errMessage
*/
void onError(String errMessage);
/**
* 绑定Android生命周期 防止RxJava内存泄漏
*
* @param
* @return
*/
AutoDisposeConverter bindAutoDispose();
}