一.序言

应公司要求要求,要用小程序开发一个信息录入系统。没办法只能听话来填坑。

先介绍一下环境:客户端——小程序;服务端——java;数据库——mysql;服务器——centos7

需求:客户端输入信息,insert到数据库,没错就是这么一个简单的小功能,却为这个请求折腾了大半天

二.开始

先来看一下wx.request的官方文档:地址如下https://mp.weixin.qq.com/debug/wxadoc/dev/api/network-request.html#wxrequestobject

嗯,咋看之下貌似挺正常的,没什么问题,想必写过ajax请求的同学都是一看就明白,这应该是封装了一下ajax的请求。好了,我们接下来开始填坑…

三.客户端

为了有一个接口地址,花了一个月时间去买了服务器、注册了域名、部署了一下、备案…得到了https的合法域名。

首先这个请求的url必须是https,老版本的怎样不是很清楚,据说可以用http?想办法弄一个https的域名先。

接着看一下整个请求代码:

这边data要写成json形式大家都知道,但是,如果这样写:

我这边是没接受到数据,各种报错,大家可以试试。然后这个json数据呢,要先转一下格式:

区别就是一个是jsonObj,而这里是json字符串。直接post jsonObj过去,我这里测的是服务端接受直接报错,各种getxxxxx()都用过,有大佬测试成功的告诉我一下,谢谢。

然后看下面一行,header.这个默认是application/json 嗯,我这样试了下:

这是请求的数据,可以看到,发送的时候数据还是正常的,然后服务端接收:

结果数据库显示:

看了一下log:

中文变成了乱码。首先看一下mysql的编码,是utf-8没错,mysql的GUI工具Navicat for Mysql 字符集也是UTF-8,以为是linux服务器编码问题,去看了一下并且改成了utf-8,但乱码情况依然出现。

接着我不从小程序post,我直接在这个网站页面上写个ajax,放个中文数据到json中,post到后台再插入到数据库看看会不会乱码:

接着发现只要不是从小程序post的数据,都不会出现乱码情况,然后log里面显示,在进入servlet后,接收到小程序post过来的json数据时就变成了乱码。

由这些推断出,是在传输过程中,编码不统一导致的。

最后,终于试出了一个,能传过去值,能接收到不显示null,不显示乱码,服务器不报500的方法,小程序请求就如上面那个请求那样写,header这样写:


最后,method是POST。至此小程序端的请求就完成了,下面我们看下服务端用java怎么实现。

四.服务端

从小程序那边post过来的是json字符串,请求是这样的:

可以看到,这里的content-type都是utf-8的编码,最下面从原来的requestpayload变成了formdata(requestpayload和formdata的区别可以百度),数据也是正确的。

然后服务端应该这样接收:

上面三行代码非常重要,防止出现请求跨域的情况,写了前两行代码;防止出现乱码,跟小程序那边统一了编码格式,setContentType成UTF-8

看一下log:

没问题,再看一下数据库:

最后,我们看一下小程序返回结果:

可以看到这里的data是我再服务端用out.print返回的结果,同样没问题。至此这个问题解决完美了。

五.结语

刚接触小程序,感觉还是比较坑爹的,网上还有好多其他例子这里就不一一举例了,要以输出log为荣,知错不报为耻..遇到问题先看一下log,经过测试最后一定能找到解决方法。

希望这篇能对同我一样刚入坑的小伙伴有帮助吧。

转载于:https://www.cnblogs.com/JJDJJ/p/7299274.html

微信小程序填坑之路其一:wx.request发送与服务端接受相关推荐

  1. 微信小程序填坑之路(六):wx.getUserInfo 接口的变动与使用

    问题 在微信小程序开发中,获取用户信息是经常会用到的!在之前,我们直接调用wx.getUserInfo接口,就可以直接获取用户的信息.然而为了安全考虑,从2018年4月30号开始,wx.getUser ...

  2. 微信小程序填坑之路(三):布局适配方案(rpx、px、vw、vh)

    因为小程序是以微信为平台运行的,可以同时运行在android与ios的设备上,所以不可避免的会遇到布局适配问题,特别是在iphone5上,因为屏幕尺寸小的缘故,也是适配问题最多的机型,下面就简单介绍几 ...

  3. Java小程序post如何传参,[Java教程]微信小程序填坑之路其一:wx.request发送与服务端接受...

    为了有一个接口地址,花了一个月时间去买了服务器.注册了域名.部署了一下.备案-得到了https的合法域名. 首先这个请求的url必须是https,老版本的怎样不是很清楚,据说可以用http?想办法弄一 ...

  4. 微信小程序填坑之路(一):text空格符号以及省略号

    1.text的空格符 首先需要设置<text> 控件的decode值 decode可以解析的有  < > & '     值 说明 ensp 中文字符空格一半大小 em ...

  5. 微信小程序填坑之路(三)--上传头像

    上传头像, 使用wx.chooseImage({})后 在使用wx.uploadFile({})结合起来使用. 示例代码: Page({data: {src: "../../image/ph ...

  6. 微信小程序填坑 视频篇

    写了一年小程序,每天接受数万付费用户的考验,踩过小程序的坑数不胜数.先写一下视频篇,写一些会影响到用户正常看视频功能和影响业务主体流程的坑. 1.一些低端设备无法播放高清视频 1080p 需要接入转码 ...

  7. 微信小程序填坑篇 2

    微信小程序开发的时候,很多接口都不太能信任,需要作一些额外的兜底处理.保证程序在什么情况下都能尽可能健康的运行. 也要有一套健全的异常收集反馈机制,方便迅速发现问题解决问题. 小程序生态的异常监控体系 ...

  8. 微信小程序中断请求的处理,中断 wx.request() 请求

    在微信小程序中,向后台发出一个请求A, 如果长时间后台不返回相应的数据,前端还处于接受状态, 这样会引起一些问题,那么就可以在前端代码中直接中断当前的请求: 下面发出一个请求: const task ...

  9. 2023年微信小程序获取手机号授权登录注册详细教程,包含服务端教程

    前言 小程序中有很多地方都会用到用户的手机号,比如登陆注册,填写收货地址等等.有了这个组件可以快速获取微信绑定手机号码,无须用户填写. 网上大多数教程还是往年的,而微信官方的api已做了修改.本篇文章 ...

最新文章

  1. docker 必然用到的一些指令
  2. 如何解决数据一致性、任务调度、流水号生成等问题?
  3. Vite与webpack优势
  4. English trip -- VC(情景课)2 D Reading
  5. python的内建函数built-in functions
  6. python脚本多少钱一个_一个python脚本
  7. Macbook Pro休眠唤醒后后台运行程序被关闭的解决方法
  8. 异常点/离群点检测算法——LOF
  9. 霍夫变换(Hough Transformation)基本思想及MATLAB相关函数
  10. 单光感pid巡线_PID非常好的光感巡线思路
  11. java毕业设计——基于java+Spring+SSH的CRM客户关系管理系统设计与实现(毕业论文+程序源码)——CRM客户关系管理系统
  12. java在线查看PDF
  13. 同态加密 bootstrapping自举算法
  14. GEE:LandTrendr时间序列曲线拟合
  15. python如何模拟微信扫码登录_python 微信扫码登录故障解决
  16. 固态硬盘数据丢失了该怎么办
  17. 水印watermark
  18. 爱奇艺qsv格式视频无损转换为MP4
  19. 限免|iOS长截图工具 滚动截屏
  20. python做客户端适合吗_太简单!只学十分钟,Python菜鸟也能开发一个区块链客户端...

热门文章

  1. javaSE-第69篇-for循环综合案例 2
  2. 黑马程序员_java_银行售票系统
  3. win10开机进入桌面不停加载闪动,任务栏和桌面图标消失
  4. 一分钟带你了解全民拼团模式解析
  5. yolov5改进(一) 添加注意力集中机制
  6. s3c2416keil下裸跑
  7. STM32+LWIP服务器实现多客户端连接
  8. 设计模式:行为型模式 - 观察者模式
  9. java se与java ee的区别
  10. 苏州数字孪生智能工厂,3d可视化工业建模,数字工厂智能车间建设