前言:
作為一個運維人員不背鍋,誰背呢!
正文:
開發人員和前端人員寫好了微信小程序,然后坑出現了,安卓上打死不能一鍵登錄。然后開始排查,
開始從數據上著手,不管是使用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版的微信版本一樣了,然后就可以正確上傳文件了!?。。。。?br />
一億只草泥馬奔騰而過…………………………
所以建議大家可以用 wx.getSystemInfo 獲取微信版本號判斷一下是否6.5.2以上,否則提示用戶升級微信。
備注:建議升級到最新版本安卓及ios版本,最新版本查詢地址:http://weixin.qq.com/備注:測試版本無法在上述地址內看到