微信小程序跳坑记:uploadFile:fail与一键登录之无法识别json数

2017-01-10

一:微信小程序一键登录之无法识别json数据

前言:
  作为一个运维人员不背锅,谁背呢!


正文:

  开发人员和前端人员写好了微信小程序,然后坑出现了,安卓上打死不能一键登录。然后开始排查,

开始从数据上着手,不管是使用postman进行模拟测试数据,还是通过抓包查看数据,无任何问题,但是就是微信小程序无法判断改数据是json数据。


 后来继续测试,打console.log 断点,抛数据出来查看发现 该数据 确实也存在问题,直接使用res.data 使用typeof 查看 确实为字符串,但是使用JSON.parse 却抛的微信小程序 百度都不能百度的错误, 怀疑要么就是数据问题 要么就是微信小程序内置的问题!

  因为该问题只有安卓可以,ios是没问题的 不应该啊~。  


  过程不在赘述,这个问题是由

微信小程序跳坑记:uploadFile:fail与一键登录之无法识别json数


调用了这里下载的文件所致,很神奇的原因(笔者公司使用的php)

不管是linux使用file查看 还是 vi 查看 :set fileencoding  都是没问题的 ,把以下文件内容删了 重新自己写文件  在代码贴进去 就没问题了 得已解决

微信小程序跳坑记:uploadFile:fail与一键登录之无法识别json数


排查的方法是 接口打断点,一直打到这几个文件出问题,就算这几个文件 就写<?php 也是有问题的

虽然具体原因不知道  但是确实这奇异的做法 解决了这个问题


最终发现原因:原来 是因为 <?php 前边有一个 <feff>

在安卓中,还有相似的坑,参考这个:

跳坑《五十九》安卓下不解析json,request的response中出现红点

http://www.moquu.com/v/1609.html


二:uploadFile:fail Error: unable to verify the first certificate

分享者:ranfengzheng,原文地址问题描述:

本地调试  调用上传 官方说明:
wx.uploadFile(OBJECT)

将本地资源上传到开发者服务器。如页面通过 wx.chooseImage 等接口获取到一个本地资源的临时文件路径后,可通过此接口将本地资源上传到指定服务器。客户端发起一个 HTTPS POST 请求,其中 content-type 为 multipart/form-data 。

看情况应该是支持https 但是在实际开发过程中 https  并不能使用  http 倒是可以

报错为:


微信小程序跳坑记:uploadFile:fail与一键登录之无法识别json数



然后问群里:都说很明显啊 证书错误,会翻译的人都知道吧?

但是事实上我们的接口也是使用 https 本地自己的证书也是没有问题的。故作为一个运维人员的我 苦逼的搜索资料  还有就是进行一系列测试

测试是从直接写demo 调线上接口开始调试,尽管使用线上接口依然这个错误 猜测是不是这个东西压根就没有经过什么配置  相当于被写死了的感觉~~

后来 搜索文章 某大牛说道:


微信小程序跳坑记:uploadFile:fail与一键登录之无法识别json数



原因:上传和下载,本地开发中的调试是有问题的,需要预览才能测试



案例二:

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/
备注:测试版本无法在上述地址内看到




0
收藏