微信小程序的 post请求无法获取data参数,一切都是Content-Type问题,之前分析的确实有点错误,Content-Type为‘application/json’时,后端需要用@RequestBody ,Content-Type为‘application/x-www-form-urlencoded’或者‘multipart/form-data’时可以用不加注解或者@RequestParam

解决方案

java后台

方案一与方案二唯一不同之处就是@RequestBody注解的参数类型不同。没错,就是用@RequestBody来获取微信小程序 wx.request中data参数。

方案一:参数为自定义类

该方式主要可用于前端传递自定义对象参数时

@ResponseBody@RequestMapping("testPost")public String testPost(HttpServletRequest request, HttpServletResponse response, @RequestBody User user){response.setHeader("Access-Control-Allow-Origin", "*");System.out.println("uid:"+user.getUid()+" uname:"+user.getUname());JSONObject js = new JSONObject(j);return js.toString();}

方案二:参数为MAP

该方法可以自定义前面的传参,原本是想找个能直接传递int、String这种的,最后无奈放弃选用这种了

@ResponseBody@RequestMapping("testPost")public String testPost(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> params){response.setHeader("Access-Control-Allow-Origin", "*");JSONObject json = new JSONObject(params);System.out.println("uid:"+json.get("uid")+" uname:"+json.get("uname"));return json.toString();}

小程序端

 wx.request({url: 'action地址',data:  {'uid':1,'uname':"哈哈"},method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT// header: {}, // 设置请求的 headersuccess: function(res){// successconsole.log("toRed success:"+res.data.uid+' '+res.data.uname)},fail: function(res) {// failconsole.log("toRed fail:"+res);},complete: function(res) {// completeconsole.log("toRed complete:"+res);}})

什么?head怎么没了?data数据转换怎么没了?因为那些都不需要,不论换不换head,最后微信请求时都是'Content-Type': 'application/json',不信的话你可以去开发者工具那看看

解决历程

在网上寻找解决过程时,看到好多说要将head中的'Content-Type': 'application/json'改为"Content-Type": "application/x-www-form-urlencoded",也有说即使改成上面格式也依旧获取不到data的,然后又将datay由Json改为“uid=1&uname=哈哈”类似字符串,同时字符串要经过encodeURIComponent转码,并给出相应转码util的。然而以上这些都没说后台是什么环境,自然也没找到基于ssm的java后台的相关解决方案了。 偶然转换了下思路,同样的代码为何在普通的html中可以使用,在小程序里就报空指针异常(由于参数中包含int类型)了呢。

微信小程序中的post请求参数是在request payload中,如图:

经过大量搜索筛选后,@RequestBody这个注解项进入到视野。

@RequestBody 将HTTP请求正文转换为适合的HttpMessageConverter对象。 POST模式下,使用@RequestBody绑定请求对象,Spring会帮你进行协议转换,将Json、Xml协议转换成你需要的对象。

微信小程序 java服务端下的post请求相关推荐

  1. 小程序PHP CGI,微信小程序php服务端nginx配置

    微信小程序php服务端nginx配置 微信小程序server端如果选择自己部署的话,可以选择java或者php的,为了省事我选择了php的,腾讯是用CodeIgniter框架做的demo,由于CI框架 ...

  2. 浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务)

    浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务) 参考文章: (1)浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务) (2)https://www.cnblogs.com/ ...

  3. 微信小程序java服务_微信小程序访问webService(Java)

    在前台UI确认后,终于进入到后台服务的搭建及实现中.所及而来的问题就出现了,为了提高后台程序的可用性.设计初期决定,通过搭建java WebService实现.准备工作还是比较充分的,创建WebSer ...

  4. 微信小程序中开发环境下的POST请求

    写在前面 不得不说,开发环境下,微信小程序要是在发起网络请求的话,遇到的坑也是有的.尽管,微信提供了十分便捷的API 供开发者调用.今天在小程序中写了一个表单,需要提交到服务器上,于是发起了一个 PO ...

  5. 10分钟上线 - 利用函数计算构建微信小程序的Server端

    摘要: 阿里云函数计算是一个事件驱动的全托管计算服务.通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传.微信小程序是一种不需要下载安装即可使用的应用,它可以在微信内被便捷地获取和传播. 当 ...

  6. 口令红包-利用函数计算构建微信小程序的server端

    摘要: 阿里云函数计算是一个事件驱动的全托管计算服务.通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传.微信小程序是一种不需要下载安装即可使用的应用,它可以在微信内被便捷地获取和传播. 当 ...

  7. 利用Serverless构建微信小程序的Server端

    前言 这篇文章适合所有的想微信小程序开发新手.老鸟以及想准备学习开发微信小程序的程序猿.本文以开发一个类似"语音口令红包"小程序为例,向您讲解如何使用阿里云函数计算快速构建微信小程 ...

  8. 微信小程序商城服务器搭建,基于微信小程序商城毕业设计(小程序客户端+服务端Node.js源码)毕业论文+运行说明...

    微信小程序商城毕业设计(微信小程序客户端毕业设计) 摘  要 购物商城系统是保证以购物商城为基础的网上交易实现的体系.市场交易是由参与交易双方在平等.自由.互利的基础上进行的基于价值的交换.网上交易同 ...

  9. java家政后台代码下载_微信小程序家政服务预约系统毕业论文+前台源码+后台(JavaSSM)源码及Mysql数据库...

    摘  要 O2O模式能够充分的利用网站创立企业在O2O模式中的竞争优势,基于O2O模式的这一特点,本次毕业设计开发了微信小程序家政服务预约系统.该家政服务预约系统发挥了网络优势,采用O2O模式营销手段 ...

最新文章

  1. Spring Boot 最流行的 16 条实践解读!
  2. linux下使用update-alternatives切换java版本的正确姿势
  3. 7月最新发布10.2.0.4.5 Patch Set Update
  4. NTFS格式分区大小数值表
  5. abaqus 录制结果动画_后处理动画录制
  6. 显色指数(CRI)计算软件-升级版可视化界面
  7. 交换机测试丢包软件,交换机丢包问题定位
  8. [Linux驱动炼成记] 04-功放TAS5754
  9. 声网 X 牛客网 200万场视频面试背后的实时互动技术支撑
  10. 2020年金融科技创新项目总结
  11. 浏览器提示代理服务器没有响应
  12. 生日蛋糕(noi99)
  13. mysql数据库网课_中国大学MOOCMysql数据库系统网课答案
  14. 月记 18.11.08
  15. 【MacOS】Mac下的gVim - MacVim
  16. e代驾——打造代驾服务标准化平台
  17. 视觉SLAM十四讲CH8代码解析及课后习题详解
  18. 核心微生物分析_微生物总结(全)
  19. 1030: 判断直角三角形Python
  20. LocalDate加减操作及比较大小

热门文章

  1. 分布式电源选址定容 在改进的IEEE33节点系统中分布式电源选择最佳接入点和接入容量
  2. 【分布式能源的选址与定容】基于多目标粒子群算法分布式电源选址定容规划研究(Matlab代码实现)
  3. 163邮箱收不到mdaemon 11发过来的邮件
  4. 英特尔CEO帕特·基辛格:以独特优势抓住巨大的增长机遇
  5. 时钟失效之后,STM32还能运行?
  6. Python数据采集与文本分析(学术)
  7. 简述蒙代尔政策配合说的主要内容
  8. 帕累托最优(Pareto Optimality)和纳什均衡(Nash Equilibrium)之间的关系
  9. POS(权益证明机制)
  10. 嵌入式stm32f411系列-- --学前准备(mdk+器件支持包+stm32cubemx+固件包)