retrofit + okhttp 数组 +header+ post + body[params]

2024-09-02 07:32

本文主要是介绍retrofit + okhttp 数组 +header+ post + body[params],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

很辛苦,搞定实际上是因为基础确实落下了很多,加上retrofit的body讲解太少,翻墙看了很多资料,最终,解决,给各位分享下代码,互相学习;

1.需求:添加header,并且数组进行post传参,@body

api代码:


@POST("void")
Call<Bean> getbean(
        @Header("a") String a ,@Header("b") String b,
        @Body() HashMap<String,ArrayList<String>> params);

代码请求:

首先声明:HashMap<String,ArrayList<String>> list_abc = new HashMap<>();
ArrayList<String>al1=new ArrayList<String>();
    for(int i = 0 ; i < list.size() ; i ++){
        al1.add(list.get(i).getparams);
        list_abc.put("param",al1);
    }
    Call<Devicebean> calldevice = apiStores().getDevices(a,b
            ,list_abc);
    calldevice.enqueue(new RetrofitCallback<Devicebean>() {
        @Override
        public void onSuccess(Devicebean model) {
            Log.d("device",""+"device"+model.getCode());

        }

        @Override
        public void onFailure(int code, String msg) {
            Log.d("device","code:"+code+"msg"+msg.toString());
        }

        @Override
        public void onThrowable(Throwable t) {
            Log.d("device","throwable"+t.toString());
        }

        @Override
        public void onFinish() {
            Log.d("device","finish");
        }
    });
}

在请求过程中,使用抓包工具:Fldder,手机APP请求情况


ok,成功,代码其实简单,就是没用body传输数组;

但是你觉得这样就结束了吗?不是,来自:

@Override
public void onThrowable(Throwable t) {
    Log.d("device","throwable"+t.toString());
}

c出现:com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected an int but was BEGIN_ARRAY at line 1 column 126 path $.result[0].value[1].value

没把我气吐血

问题描述是:需要array,但是却是int格式

后来跟后台交流才发现,这个键值对的数据类型可以为int或者array,于是我抽了根烟,写上object;

这篇关于retrofit + okhttp 数组 +header+ post + body[params]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129364

相关文章

Java数组初始化的五种方式

《Java数组初始化的五种方式》数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点,本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱... 目录1. 静态初始化:简洁但固定代码示例核心特点适用场景注意事项2. 动态初始化:灵活但需手动管理代

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

Vue3使用router,params传参为空问题

《Vue3使用router,params传参为空问题》:本文主要介绍Vue3使用router,params传参为空问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录vue3使用China编程router,params传参为空1.使用query方式传参2.使用 Histo

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

C++原地删除有序数组重复项的N种方法

《C++原地删除有序数组重复项的N种方法》给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度,不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(... 目录一、问题二、问题分析三、算法实现四、问题变体:最多保留两次五、分析和代码实现5.1、问题分析5.

Java中数组转换为列表的两种实现方式(超简单)

《Java中数组转换为列表的两种实现方式(超简单)》本文介绍了在Java中将数组转换为列表的两种常见方法使用Arrays.asList和Java8的StreamAPI,Arrays.asList方法简... 目录1. 使用Java Collections框架(Arrays.asList)1.1 示例代码1.

Gin框架中的GET和POST表单处理的实现

《Gin框架中的GET和POST表单处理的实现》Gin框架提供了简单而强大的机制来处理GET和POST表单提交的数据,通过c.Query、c.PostForm、c.Bind和c.Request.For... 目录一、GET表单处理二、POST表单处理1. 使用c.PostForm获取表单字段:2. 绑定到结

C++一个数组赋值给另一个数组方式

《C++一个数组赋值给另一个数组方式》文章介绍了三种在C++中将一个数组赋值给另一个数组的方法:使用循环逐个元素赋值、使用标准库函数std::copy或std::memcpy以及使用标准库容器,每种方... 目录C++一个数组赋值给另一个数组循环遍历赋值使用标准库中的函数 std::copy 或 std::