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

相关文章

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::

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu