微信小程序填坑之路其一:wx.request发送与服务端接受
一.序言
应公司要求要求,要用小程序开发一个信息录入系统。没办法只能听话来填坑。
先介绍一下环境:客户端——小程序;服务端——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,经过测试最后一定能找到解决方法。
希望这篇能对同我一样刚入坑的小伙伴有帮助吧。
微信小程序填坑之路其一:wx.request发送与服务端接受的更多相关文章
- 微信小程序填坑之路(三):布局适配方案(rpx、px、vw、vh)
因为小程序是以微信为平台运行的,可以同时运行在android与ios的设备上,所以不可避免的会遇到布局适配问题,特别是在iphone5上,因为屏幕尺寸小的缘故,也是适配问题最多的机型,下面就简单介绍几 ...
- 微信小程序填坑之路
图片处理 三个小方法仅供参考1.将图片转成base64编码,可以使用代码来转换,当然我才不愿意特意写代码转,我懒,献上一个在线图片转base64的地址:http://tool.css-js.com/b ...
- [转]微信小程序填坑之路之使用localhost在本地测试
本文转自:http://www.wxappclub.com/topic/798
- 微信小程序填坑之旅一(接入)
一.小程序简介 小程序是什么? 首先“程序”这两个字我们不陌生.看看你手机上的各个软件,那就是程序.平时的程序是直接跑在我们原生的操作系统上面的.小程序是间接跑在原生系统上的.因为它嵌入在微信中,受微 ...
- 小程序填坑之路(二):cover-view
https://blog.csdn.net/mr_chen95/article/details/79261987 在一些情况下,我们需要对map.video.canvas.camera这些微信小程序的 ...
- 微信小程序填坑之旅
一.解决scroll-view的滚动条问题 1.出现场景css. 有些场景下scroll-view是不需要滚动条的,比如顶部导航栏的横向滑动.而在单页的css样式中加入特定代码不能影响到全局的样式 2 ...
- 微信小程序填坑---小程序支付
因为公司刚刚重新做了网站,所以也吧公众号和小程序提上了日程,在公众号里面没有什么问题,直接按照官方文档进行代码编写.调试,然后就解决了公众号内支付的问题. 因为小程序提供了<webview> ...
- 微信小程序填坑之旅(1)-app.js中用云开发获取openid,在其他页上用app.globaldata.openid获取为空
参考:小程序如何在其他页面监听globalData中值的变化?https://www.jianshu.com/p/8d1c4626f9a3 原因就是:app.js没执行完时,其他页已经onload了, ...
- 微信小程序填坑之page[pages/XXX/XXX] not found.May be caused by
当页面出现 page[pages/XXX/XXX] not found.May be caused by :1. Forgot to add page route in app.json.2. I ...
随机推荐
- 转)delphi chrome cef3 控件学习笔记 (二)
(转)delphi chrome cef3 控件学习笔记 (二) https://blog.csdn.net/risesoft2012/article/details/51260832 原创 2016 ...
- 应用安全-Web安全-SSRF攻防
原理 服务器: IP:.XX.191.14 nc -l -p 客户端: http://xx.map.xx.com/maps/services/thumbnails?width=215&heig ...
- 深度探索区块链/基于Gossip的P2P数据分发(4)
一.概述 背书节点模拟执行签名的结果会经过排序服务(Ording service)广播给所有的节点. 它提供的是一种原子广播服务(Atomic Broadcast),即在逻辑上所有节点接收到的消息顺序 ...
- Oracle-第一篇一些调优技巧
1.查询 1>通过提示,使用索引. 2>使用/*+parallel*/并行查询 3>查看执行计划,调整sql语句或者优化表结构 4>避免使用“*”号 2.表设计:partiti ...
- 在SSIS 的 64 位版本中不支持 Excel 连接管理器[转]
Microsoft sql server 2008 R2——> SQL SERVER Business Intelligence Development Studio 使用EXCEL数据源或目标 ...
- SCUT - 142 - 第n个素数
https://scut.online/p/142 但是洲阁筛打表还是超时了,打的表不够长吧,在51nod上面要跑5s.要是快10倍得要密1000倍,根本打不出来(时间意义). 暴力check要找的质 ...
- HCL AppScan Standard 9.0.3.13
https://pan.baidu.com/s/1mh97vyJdWy1CmF589jZJhQ 网盘密码: q31g / 压缩密码:shungg.cn http://www.shungg.cn/pos ...
- MVC 与 MVP 并无两样
关于 MVC 的定义介绍,摘一段百度百科介绍: MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: Model(模型)表示应 ...
- linux相关(find/grep/awk/sed/rpm)
如何查找特定的文件: find :在指定目录下查找文件 find -name "filename" :从当前目录查找文件 find / -name "filename&q ...
- 2019-8-31-dotnet-core-集成到-Mattermost-聊天工具
title author date CreateTime categories dotnet core 集成到 Mattermost 聊天工具 lindexi 2019-08-31 16:55:58 ...
















