开发问题:postman调试正常,在项目使用restTemplate发送就是不成功.
时间:2020-04-12
本文章向大家介绍开发问题:postman调试正常,在项目使用restTemplate发送就是不成功.,主要包括开发问题:postman调试正常,在项目使用restTemplate发送就是不成功.使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
背景:使用微信公众号接口,生成带参数的二维码.
冲突:postman调试正常,在项目使用restTemplate发送就是不成功.
问题1:可能是url不对。
问题2:可能请求的json对象,格式不对。
问题3:restTemplate,json解析不对。
解决1:
postman : https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=
项目:public static final String POST_CREATE_QRCODE_URL="https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={access_token}";
结果1:结果一致.
解决2:
postman:
项目日志:
结果2:完全一致.
解决3:打开springBoot的restTemplate日志设置成debug.
发送请求:
日志如下:
参数信息:{"action_info":{"scene":{"scene_id":1,"scene_str":"856b8ffb-a6ca-4bc9-813b-1419a6530ac6"}},"action_name":"QR_SCENE","expire_seconds":300}
参数信息:{"action_info":{"scene":{"scene_str":"856b8ffb-a6ca-4bc9-813b-1419a6530ac6","scene_id":1}},"action_name":"QR_SCENE","expire_seconds":300}
HTTP POST https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=32_ZTBg5kzh3hUMoaP7xJik8YAFJkoO5gNwjosG1XvI2b4MORGLNitSV4RQSF2JIOx_4MrDGZ5sbNq8bEJ4miwOfK2mcO64TyMIweEUOR5IsY49Kl2vsQuq1plmS2eBQbhzHZVK1HOzFvh125jPPLJhAJALHF
Accept=[application/xml, text/xml, application/json, application/*+xml, application/*+json]
Writing [{"action_info":{"scene":{"scene_str":"856b8ffb-a6ca-4bc9-813b-1419a6530ac6","scene_id":1}},"action_name":"QR_SCENE","expire_seconds":300}] with org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter
Response 200 OK
Reading to [com.alibaba.fastjson.JSONObject]
返回结果:{"errcode":40052,"errmsg":"invalid action name hint: [PQ4c.a00331960]"}
关键信息:org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter ??参数转换使用的xml转换器.
接下来定位到:参数转换问题
查看源代码:
啊啊啊啊啊,返回的是Object对象.
查看其他方法:
修改为toJSONString做测试
日志如下:
参数信息:{"action_info":{"scene":{"scene_id":1,"scene_str":"323a31ec-906a-4cb2-a24f-fb846fb16997"}},"action_name":"QR_SCENE","expire_seconds":300}
参数信息:{"action_info":{"scene":{"scene_str":"323a31ec-906a-4cb2-a24f-fb846fb16997","scene_id":1}},"action_name":"QR_SCENE","expire_seconds":300}
HTTP POST https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=32_ZTBg5kzh3hUMoaP7xJik8YAFJkoO5gNwjosG1XvI2b4MORGLNitSV4RQSF2JIOx_4MrDGZ5sbNq8bEJ4miwOfK2mcO64TyMIweEUOR5IsY49Kl2vsQuq1plmS2eBQbhzHZVK1HOzFvh125jPPLJhAJALHF
Accept=[application/xml, text/xml, application/json, application/*+xml, application/*+json]
Writing [{"action_info":{"scene":{"scene_id":1,"scene_str":"323a31ec-906a-4cb2-a24f-fb846fb16997"}},"action_name":"QR_SCENE","expire_seconds":300}] with org.springframework.http.converter.StringHttpMessageConverter
Response 200 OK
Reading to [com.alibaba.fastjson.JSONObject]
返回结果:{"ticket":"gQEz8DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyU2xwOXhsRGpkLTIxd01nak51MU4AAgQED5NeAwQsAQAA","expire_seconds":300,"url":"http://weixin.qq.com/q/02Slp9xlDjd-21wMgjNu1N"}
关键信息:StringHttpMessageConverter
返回结果:正常.
总结:JSON.toJSON返回Object对象,会调用MappingJackson2XmlHttpMessageConverter,JSON.toJSONString返回String对象,会调用StringHttpMessageConverter,切记虽然转换的结果都一样,但是restTemplate调用的转换器不同,啊啊啊啊啊啊啊.
原文地址:https://www.cnblogs.com/rickq95/p/12687602.html
- css3 UI 修饰——回顾
- Windows Phone 7实战 第一天 设计启动页面和应用程序图标
- css3响应式布局设计——回顾
- Windows Phone 7 实战第二天 二维码QRcode
- Python-面向对象编程
- SQL Server 2012将与Hadoop无缝集成
- 系统性能优化一例
- Android中include标签的使用
- css3弹性盒子模型——回顾。
- confluence与jira账号对接、查看到期时间及问题总结
- 物联网、人工智能时代来临五大隐忧不可不提防
- Contact Manager Web API 示例[1]CRUD 操作
- 3个域名交易:fde.com11万被秒
- 新手指南OpenStack:Nova的基础知识
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法