HTTP get方式传json
文章目录
- 一、背景?
- 二、尝试的过程
- 1.postman(成功)
- 2.hutool(失败)
- 3.AsyncHttpClient(成功)
- 总结
一、背景?
最近项目中有个三方接口,需要使用get请求传递json,
这个让人有点懵,一般来说get参数都会直接拼接在url后, 复杂的参数都使用post方式传递, 尝试过程中发现postman可以正常请求,使用hutool工具请求却失败了,网上找了一圈,才摸索出了解决方案
二、尝试的过程
1.postman(成功)
截图如下(示例):
2.hutool(失败)
代码如下(示例):
HttpRequest get = HttpUtil.createGet(url + "api/token");Map<String, String> params = new HashMap<>();params.put("AppId", appId);params.put("AppKey", appKey);get.body(JSONObject.toJSONString(params), "application/json");get.execute();
上述代码会返回415(为什么明明是get,却提示415呢?),这里有意思的地方在于, 如果我去掉get.body() 这行代码, 他会正常返回没有参数的异常, 所以我推测是hutool在发现请求携带body时, 将get换成post方式了, 而且在fiddler中发现确实如此。
3.AsyncHttpClient(成功)
此处参考博客地址
废话不多说,代码如下
DefaultAsyncHttpClient asyncHttpClient = new DefaultAsyncHttpClient();Map<String, String> params = new HashMap<>();params.put("AppId", appId);params.put("AppKey", appKey);Request r = new RequestBuilder().setUrl(url + "api/token").setBody(JSONObject.toJSONString(params)).addHeader("Content-Type", "application/json").build();ListenableFuture<Response> future = asyncHttpClient.executeRequest(r);Response response = future.get();asyncHttpClient.close();//工具版本<dependency><groupId>org.asynchttpclient</groupId><artifactId>async-http-client</artifactId><version>2.12.3</version></dependency>
总结
首先说明,get方式可以携带body, 传json是没问题的 但是不推荐在定义接口时要求用get接收json,就像大家在吃饭喜欢用筷子而不是勺子,虽然都可以达到目的,不过显而易见"筷子"更受欢迎
HTTP get方式传json相关推荐
- get方式传json参数的一种方法
遇到了不得不使用get方式传json的情况,无奈之下只好想办法搞,经过几天的尝试,试过了map等各种转换后,才恍然发现,只要把json串用URLEncoder一下,作为参数值就可以了,接收的时候再用U ...
- php用get方式传json数据 变成null了
$data = I('param.data'); $data=stripslashes(html_entity_decode($data));//$data为传过去的json字符串 转载于:https ...
- python传递参数格式_Python语言学习基础篇之Python发送Post请求之根据参数位置传参、数据类型、不同方式传参...
本文主要介绍了Python语言学习基础篇之Python发送Post请求之根据参数位置传参.数据类型.不同方式传参,通过具体的内容向大家展现,希望对大家Python语言的学习有所帮助. 目录 一.验证 ...
- Android中的JSON解析方式:json; Gson ; Fastjson
本文主要介绍Json数据的解析 ----a,json数据的介绍 ----b,json数据的解析 ----c,gson数据的解析,谷歌公司的一种格式 ----d,fastjson数据的解析,阿里巴巴的一 ...
- ireport参数传递json_Json传递数据两种方式(json大全)
1.Json传递数据两种方式(json大全) ----------------------------字符串 var list1 = ["number","name&qu ...
- php put怎么接收文件,php,restful_PHP PUT方式传文件的话,如何获取文件内容呢 ?,php,restful,http - phpStudy...
PHP PUT方式传文件的话,如何获取文件内容呢 ? 最近因为在做前后端分离,后端PHP所有Api都使用RESTFul风格. 但是在使用PUT上传文件的时候,发现$_FILES没有文件信息(可能没有上 ...
- 将图片进行base64 编码后的数据进行读取,以io流的方式传给前台并显示出来并且不断刷新图片
前提摘要:最近做一个项目,是关于slam的,给slam发送构建地图的命令,slam不断返回json串,而地图的图片在json串中已经经过base64编码了,我这边需要将base64编码解析并以流的方式 ...
- Retrofit 2.0 超能实践(三),轻松实现多文件/图片上传/Json字符串/表单
通过前两篇姿势的入门 Retrofit 2.0 超能实践,完美支持Https传输 Retrofit2.0 完美同步Cookie实现免登录 本文出自:http://blog.csdn.net/sk719 ...
- Retrofit 2.0 轻松实现多文件/图片上传/Json字符串/表单
如果嫌麻烦直接可以用我封装好的库:Novate: https://github.com/Tamicer/Novate 通过对Retrofit2.0的前两篇的基础入门和案例实践,掌握了怎么样使用Retr ...
最新文章
- shell脚本常用脚本:while
- 2021年春季学期-信号与系统-第七次作业参考答案-第十小题
- 【MM模块】Cycle Counting 周期盘点
- Python学习笔记:Day1-2 开发环境搭建
- 32位CPU和64位CPU 区别
- java中字符串的操作_java中字符串的操作
- jhipster_jHipster入门,第1部分
- WPF自定义控件之列表滑动特效 PowerListBox
- eclipse中svn的各种状态图标详解
- navigator属性
- pandownload软件下载
- 盗版资源变少?这个比人还“眼尖”的 NLP 模型立下汗马功劳
- Simple:Press
- 如何基于protobuf实现一个极简版的RPC(转载)
- 单片机音乐倒数计时器c语言,音乐倒数计时器单片机课程设计报告
- YouTube IFrame Player API 的使用
- uniApp 实现微信小程序和app视频播放flv格式视频监控
- Python | 使用Python爬取Wallhaven网站壁纸并上传百度网盘
- 11月编程排行榜来了,Python依旧占据榜首
- Java五子棋Ai-权值法