文章目录

  • 一、背景?
  • 二、尝试的过程
    • 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相关推荐

  1. get方式传json参数的一种方法

    遇到了不得不使用get方式传json的情况,无奈之下只好想办法搞,经过几天的尝试,试过了map等各种转换后,才恍然发现,只要把json串用URLEncoder一下,作为参数值就可以了,接收的时候再用U ...

  2. php用get方式传json数据 变成null了

    $data = I('param.data'); $data=stripslashes(html_entity_decode($data));//$data为传过去的json字符串 转载于:https ...

  3. python传递参数格式_Python语言学习基础篇之Python发送Post请求之根据参数位置传参、数据类型、不同方式传参...

    本文主要介绍了Python语言学习基础篇之Python发送Post请求之根据参数位置传参.数据类型.不同方式传参,通过具体的内容向大家展现,希望对大家Python语言的学习有所帮助. 目录 一.验证 ...

  4. Android中的JSON解析方式:json; Gson ; Fastjson

    本文主要介绍Json数据的解析 ----a,json数据的介绍 ----b,json数据的解析 ----c,gson数据的解析,谷歌公司的一种格式 ----d,fastjson数据的解析,阿里巴巴的一 ...

  5. ireport参数传递json_Json传递数据两种方式(json大全)

    1.Json传递数据两种方式(json大全) ----------------------------字符串 var list1 = ["number","name&qu ...

  6. php put怎么接收文件,php,restful_PHP PUT方式传文件的话,如何获取文件内容呢 ?,php,restful,http - phpStudy...

    PHP PUT方式传文件的话,如何获取文件内容呢 ? 最近因为在做前后端分离,后端PHP所有Api都使用RESTFul风格. 但是在使用PUT上传文件的时候,发现$_FILES没有文件信息(可能没有上 ...

  7. 将图片进行base64 编码后的数据进行读取,以io流的方式传给前台并显示出来并且不断刷新图片

    前提摘要:最近做一个项目,是关于slam的,给slam发送构建地图的命令,slam不断返回json串,而地图的图片在json串中已经经过base64编码了,我这边需要将base64编码解析并以流的方式 ...

  8. Retrofit 2.0 超能实践(三),轻松实现多文件/图片上传/Json字符串/表单

    通过前两篇姿势的入门 Retrofit 2.0 超能实践,完美支持Https传输 Retrofit2.0 完美同步Cookie实现免登录 本文出自:http://blog.csdn.net/sk719 ...

  9. Retrofit 2.0 轻松实现多文件/图片上传/Json字符串/表单

    如果嫌麻烦直接可以用我封装好的库:Novate: https://github.com/Tamicer/Novate 通过对Retrofit2.0的前两篇的基础入门和案例实践,掌握了怎么样使用Retr ...

最新文章

  1. shell脚本常用脚本:while
  2. 2021年春季学期-信号与系统-第七次作业参考答案-第十小题
  3. 【MM模块】Cycle Counting 周期盘点
  4. Python学习笔记:Day1-2 开发环境搭建
  5. 32位CPU和64位CPU 区别
  6. java中字符串的操作_java中字符串的操作
  7. jhipster_jHipster入门,第1部分
  8. WPF自定义控件之列表滑动特效 PowerListBox
  9. eclipse中svn的各种状态图标详解
  10. navigator属性
  11. pandownload软件下载
  12. 盗版资源变少?这个比人还“眼尖”的 NLP 模型立下汗马功劳
  13. Simple:Press
  14. 如何基于protobuf实现一个极简版的RPC(转载)
  15. 单片机音乐倒数计时器c语言,音乐倒数计时器单片机课程设计报告
  16. YouTube IFrame Player API 的使用
  17. uniApp 实现微信小程序和app视频播放flv格式视频监控
  18. Python | 使用Python爬取Wallhaven网站壁纸并上传百度网盘
  19. 11月编程排行榜来了,Python依旧占据榜首
  20. Java五子棋Ai-权值法

热门文章

  1. 火狐浏览器扩展之三大下载利器
  2. ARM7与Cortex-M的区别
  3. 2021011029wxy-实验9视图
  4. python(N1CTF) 100详解
  5. 未来十年,什么开发工程师最火爆?
  6. 超声波换能器和超声波传感器的详细区别
  7. 【风光不确定】基于多时间尺度滚动优化算法的主动配电网研究【IEEE33节点】(Matlab代码实现)
  8. 19 多元线性回归与模型回归
  9. 搜索EMAIL/邮件中所有文件,包含压缩包/zip/rar的一种方法。
  10. 蒜头君救人 状压DP