前言:
作为一个运维人员不背锅,谁背呢!
正文:
开发人员和前端人员写好了微信小程序,然后坑出现了,安卓上打死不能一键登录。然后开始排查,
开始从数据上着手,不管是使用postman进行模拟测试数据,还是通过抓包查看数据,无任何问题,但是就是微信小程序无法判断改数据是json数据。
后来继续测试,打console.log 断点,抛数据出来查看发现 该数据 确实也存在问题,直接使用res.data 使用typeof 查看 确实为字符串,但是使用JSON.parse 却抛的微信小程序 百度都不能百度的错误, 怀疑要么就是数据问题 要么就是微信小程序内置的问题!
因为该问题只有安卓可以,ios是没问题的 不应该啊~。
过程不在赘述,这个问题是由
调用了这里下载的文件所致,很神奇的原因(笔者公司使用的php)
不管是linux使用file查看 还是 vi 查看 :set fileencoding 都是没问题的 ,把以下文件内容删了 重新自己写文件 在代码贴进去 就没问题了 得已解决
排查的方法是 接口打断点,一直打到这几个文件出问题,就算这几个文件 就写<?php 也是有问题的
虽然具体原因不知道 但是确实这奇异的做法 解决了这个问题
最终发现原因:原来 是因为 <?php 前边有一个 <feff>
本地调试 调用上传 官方说明:
wx.uploadFile(OBJECT)
看情况应该是支持https 但是在实际开发过程中 https 并不能使用 http 倒是可以
报错为:
然后问群里:都说很明显啊 证书错误,会翻译的人都知道吧?
但是事实上我们的接口也是使用 https 本地自己的证书也是没有问题的。故作为一个运维人员的我 苦逼的搜索资料 还有就是进行一系列测试
测试是从直接写demo 调线上接口开始调试,尽管使用线上接口依然这个错误 猜测是不是这个东西压根就没有经过什么配置 相当于被写死了的感觉~~
后来 搜索文章 某大牛说道:
案例二:
wx.uploadFile 这个方法同时 上传图片 和文字类,默认不会对返回的数据json处理。。使用 res.data=JSON.parse(res.data); 即可解决
前不少人在用wx.uploadFile组件时发现了各种问题,什么编码问题、网站证书问题等等,但有一个问题是没有解决的,
就是iOS的手机可以上传文件,而安卓的手机不行。我也尝试了各种办法,比如设置请求时的header 参数,检查网站服务器权限等等,
但还是无功而返。然后……解决的办法是…………………………
升级安卓手机端的微信,必须要升级到 6.5.2 版本以上!!!!
这样就和iOS版的微信版本一样了,然后就可以正确上传文件了!!!!!!
一亿只草泥马奔腾而过…………………………
所以建议大家可以用 wx.getSystemInfo 获取微信版本号判断一下是否6.5.2以上,否则提示用户升级微信。
备注:建议升级到最新版本安卓及ios版本,最新版本查询地址:http://weixin.qq.com/备注:测试版本无法在上述地址内看到