当前位置: 首页 > news >正文

网络请求 mvp mvvm get post delete put 请求

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<PlotList.DataBean> 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<BindOrgBean.DataBean> 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<BindOrg.DataBean> bindTissue(@Header("Authorization") String authorization, @Body String params);HashMap<String, Object> 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<AddDot> 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.DataBean> addProject(@Header("Authorization") String authorization,@Body String params);

下面是给服务器传集合 或者 json 

public class BindTissueModel implements BindTissueContact.Model {@Overridepublic Observable<Response<ArrayList<BindOrg.DataBean>>> bingTissue(String authorization, String appId, String orgId, String uavNum, String itemCode) {HashMap<String, Object> 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);}@Overridepublic Observable<Response<ArrayList<CutOrgItem.BindDevicesBean>>> cutOrgItem(String authorization,  ArrayList<CutOrgItem.BindDevicesBean> list) {HashMap<String, Object> 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<Protocol> protocols = new ArrayList<Protocol>() {{add(Protocol.HTTP_1_1); // <-- The only protocol used
//            add(Protocol.HTTP_2);
//        }};// 初始化okhttpHttpLoggingInterceptor 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();// 初始化Retrofitretrofit = 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<Response<ArrayList<BindOrg.DataBean>>> bindTissue(@Header("Authorization") String authorization, @Body String params);创建接口 view层public interface BindTissueContact {interface Model {Observable<Response<ArrayList<BindOrg.DataBean>>> bingTissue(String authorization, String appId, String orgId, String uavNum, String itemCode);}interface View extends BaseView {@Overridevoid showLoading();@Overridevoid hideLoading();@Overridevoid onError(String errMessage);void getBindTissue(Response<ArrayList<BindOrg.DataBean>> bindTissue);}interface Presenter {void bingTissue(String authorization, String appId, String orgId, String uavNum, String itemCode);}
}创建model层public class BindTissueModel implements BindTissueContact.Model {@Overridepublic Observable<Response<ArrayList<BindOrg.DataBean>>> bingTissue(String authorization, String appId, String orgId, String uavNum, String itemCode) {HashMap<String, Object> 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;}@Overridepublic 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<Response<ArrayList<BindOrg.DataBean>>>() {@Overridepublic void onSubscribe(Disposable d) {view.showLoading();}@Overridepublic void onNext(Response<ArrayList<BindOrg.DataBean>> orgProject) {view.getBindTissue(orgProject);}@Overridepublic void onError(Throwable e) {view.onError(e.getMessage());}@Overridepublic 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;@Overrideprotected 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);}@Overridepublic <T> AutoDisposeConverter<T> bindAutoDispose() {return null;}@Overridepublic void showLoading() {}@Overridepublic void hideLoading() {}@Overridepublic void onError(String errMessage) {}/** 绑定组织* */@SuppressLint("ResourceAsColor")@Overridepublic void getBindTissue(Response<ArrayList<BindOrg.DataBean>> 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 <T>* @return*/<T> AutoDisposeConverter<T> bindAutoDispose();}

http://www.lryc.cn/news/286391.html

相关文章:

  • 研究生开题报告撰写:文言一心VSChatgpt3.5
  • Unity animator动画倒放的方法
  • Dubbo源码解析第一期:如何使用Netty4构建RPC
  • unity刷新grid,列表
  • 蓝桥杯备赛 day 3 —— 高精度(C/C++,零基础,配图)
  • 人形机器人创新发展顶层设计与关键技术布局
  • C语言-算法-最小生成树
  • android 扫描某个包下的所有类
  • 远程ssh 不通的原因之一
  • wamp集成环境部署
  • 使用antd design pro 及后端nodejs express 结合minio进行文件的上传和下载管理
  • Unity常用的优化技巧集锦
  • c++动态调用dll
  • 使用Python自动化操作手机,自动执行常见任务,例如滑动手势、呼叫、发送短信等等
  • E - Souvenir(图论典型例题)
  • 【SpringBoot篇】添加富文本编辑器操作
  • 前台vue配置
  • 牛客周赛 Round 18 解题报告 | 珂学家 | 分类讨论计数 + 状态DP
  • CentOS防火墙基本操作
  • Shell脚本的编程规范和变量类型
  • C++面试:跳表
  • 掌握C++20的革命性特性:Concepts
  • win11开机后频繁刷新桌面,任务栏不显示,文件资源管理器explorer报错ntdll.dll
  • 解决Git添加.gitignore文件后不生效的问题
  • Shell Linux学习笔记
  • kingbase常用SQL总结之锁等待信息
  • 「优选算法刷题」:长度最小的子数组
  • RuoYi-Cloud本地部署--详细教程
  • 如何优雅的发布一个 TypeScript 软件包?
  • 总结的太到位:python 多线程系列详解