android OKhttp 参数 传递数组类型

原创 2016年08月29日 19:59:51

1, 一直在使用okhttp 最近有参数要传递数组。

2,google , 源码中是使用 map 参数 key --value 进行存储的。进行重复性赋值的时候 最后一个会替换掉 前一个

3,最简答的是用拼接 URL 的方式进行传递  例如  http://www.baidu.com?a=1&a=2&a=3...... 这样 传递的是一个 int[] 类型的 数组

但是 大家都知道的 这种方式还是GET 传递参数,对参数的大小是有要求的。超过之后就会出现异常。 及时你.post (URL) 这样也是 get方式传参数。

如何用高雅的POST 方式 传递参数。

1 既然 okhttp 已经把传递 key LISTValues的方式限制住了。那么 就应该去找,客户端到底传送的是什么,其本质是什么,服务端接收的是什么,其本质又是什么。把这个搞清楚,就知道到底OKHHTTP 能不能进行数组的传递。

2,大家都知道 post 跟get最常用的是HTML 上,所以 我就查了下 HTML 是怎么传递数组的。

代码如下  

http://stackoverflow.com/questions/6243051/how-to-pass-an-array-within-a-query-string(网址)

<input type="hidden" name="cars[]" value="Volvo">
<input type="hidden" name="cars[]" value="Saab">
<input type="hidden" name="cars[]" value="Mercedes">
以上代码,可以看出 HTML 传递数组 就是把参数写成数组的形式,进行传递。

而服务端,当你传递的不是数组的时候 会告诉你 XX类强转成 XX[] 数组错误,那就可以猜测,服务端靠 一定的格式 去强转的。

所以如何仿照 post的 http表单去写这样的请求,脑补资料 https://imququ.com/post/four-ways-to-post-data-in-http.html



这里是 截取的 postman使用数组参数 进行的请求头的参数。

所以 我们只需要在代码中找到 对应的API 就可以了。按照这个区拼接 HTTP的请求。

我这里 是使用的 okHTTP

private void addParams(MultipartBody.Builder builder) {
    if (params != null && !params.isEmpty()) {
        for (String key : params.keySet()) {
            builder.addPart(Headers.of("Content-Disposition", "form-data; name=\"" + key.replaceAll("\\[\\d+\\]", "") + "\""),
                    RequestBody.create(null, params.get(key)));
        }
    }
}
然后就OK了

html这样写 有可能就是为了拼接这个才这样写的。 在postman中尝试,完美解决。传递过去 因为有 数组的标示 会把这个强转成数组。

使用第三方库的时候,最忌讳的就是 使用人家提高的方法,看都不看,对别人说 不支持,其实就像冰河世纪5 中黄数量说的那样,肯定是有办法解决的,只是我们现在没有找到。

就到这里吧,赶紧postman中试试吧

老规矩  QQ:973683374

好多人问啊,搞个开源吧

https://github.com/liqingju123/okhttpUtilsSendArrayString



版权声明:自己尝试没有问题之后再转载

相关文章推荐

Android OkHttp完全解析 是时候来了解OkHttp了

转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/47911083; 本文出自:【张鸿洋的博客】 一、概述 最...

Android自学历程—手把手教你使用OkHttp(含各种请求方法)

支持 SPDY ,共享同一个 Socket 来处理同一个服务器的所有请求 如果 SPDY 不可用,则通过连接池来减少请求延时 无缝的支持GZIP来减少数据流量 缓存响应数据来减少...

android之OkHttp简单使用,键值对,json数据,文件上传。

okHttp 的简单使用引入Gradle依赖:compile 'com.squareup.okhttp3:okhttp:3.4.1'HTTP GET请求MainActivity代码如下:import ...

Android中okhttp的基本用法2(okHttp的简单封装)

1.开网络权限   2.所需要的jar包 gson-2.2.4.jar okhttp-2.5.0.jar okio-1.6.0.jar 导入jar包并和项目关联 3.分装类OkHttpCli...

android okhttp3 post Array 到 PHP

需求是: 要传递一个数组到 PHP后台去, 参数是那数组类型的 经过查找 发现OKhttp3 只支付两种类型的参数   String 和 File  (查找的是OkHttpRequestB...

OkHttp上传Json数据

public class MainActivity extends AppCompatActivity {public static final String TAG = "MainActivity"...

okhttp post 上传文件以及Multipart/form-data 的学习理解

在app 中,最基本的设置用户头像,需要进行头像的图片上传,那就会使用到 post 进行上传文件的操作。必然要了解下 Multipart/form-data 的含义。以前在写这部分代码的时候,不理解问...

okhttp3.x的post请求

趁下班前发一篇短文。 热衷于使用okhttp的理由,数据压缩率高,传输数据时省流量。 今天讲解下okhttp3.x的post请求的用法,get请求与okhttp2.x一样。 我下载的是okhttp3....

OkHttp3使用详解

OkHttp3是一款非常高效的http框架,下面进行简单的介绍: 1、使用单例模式声明OkHttp3的管理类添加的依赖: compile 'com.squareup.okhttp3:okhttp:3...

Android学习之Http使用Post方式进行数据提交

我们知道通过Get方式提交的数据是作为Url地址的一部分进行提交,而且对字节数的长度也有限制,与Get方式类似,http-post参数也是被URL编码的,然而它的变量名和变量值不作为URL的一部分被传...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android OKhttp 参数 传递数组类型
举报原因:
原因补充:

(最多只允许输入30个字)