前言:
作為一(yi)個(ge)運維人(ren)員(yuan)不背(bei)鍋(guo),誰背(bei)呢!
正文:
開發人(ren)(ren)員和前端人(ren)(ren)員寫(xie)好了(le)微信小程(cheng)序,然后坑出現了(le),安卓(zhuo)上打死不能一(yi)鍵登錄。然后開始排查,
開始從數據(ju)上著手(shou),不管是(shi)(shi)(shi)使用postman進(jin)行(xing)模擬測試數據(ju),還是(shi)(shi)(shi)通過抓包查看數據(ju),無(wu)任何問題,但(dan)是(shi)(shi)(shi)就(jiu)是(shi)(shi)(shi)微信(xin)小程序(xu)無(wu)法(fa)判斷改數據(ju)是(shi)(shi)(shi)json數據(ju)。
后來繼續測(ce)試,打console.log 斷點,拋(pao)數(shu)據出來查看(kan)發現(xian) 該(gai)數(shu)據 確實(shi)也存在問(wen)題(ti)(ti),直(zhi)接使用(yong)res.data 使用(yong)typeof 查看(kan) 確實(shi)為字(zi)符串(chuan),但(dan)是使用(yong)JSON.parse 卻拋(pao)的(de)微(wei)信小(xiao)程(cheng)序 百度都不(bu)能百度的(de)錯誤, 懷疑要么就是數(shu)據問(wen)題(ti)(ti) 要么就是微(wei)信小(xiao)程(cheng)序內置的(de)問(wen)題(ti)(ti)!
因為該問(wen)題(ti)只有安卓可以,ios是沒問(wen)題(ti)的 不應該啊(a)~。
過程不在贅述,這個問題是由
調用了這里下載的文件所致,很神奇的原因(筆者公司使用的php)
不管是linux使用file查看 還是 vi 查看 :set fileencoding 都是沒問題的 ,把以下文件內容刪了 重新自己寫文件 在代碼貼進去 就沒問題了 得已解決

排查的方法是 接口打斷點,一直打到這幾個文件出問題,就算這幾個文件 就寫<?php 也是有問題的
雖(sui)然(ran)具體原因不(bu)知(zhi)道 但是確實這(zhe)奇異(yi)的做法 解決了這(zhe)個問題
最終發現原因:原來 是(shi)因為 <?php 前(qian)邊有一個(ge) <feff>
本地調試 調用上傳 官方說明:
wx.uploadFile(OBJECT)
看(kan)情(qing)況(kuang)應該是支持https 但(dan)是在實際(ji)開發(fa)過程中 https 并不能(neng)使(shi)用(yong) http 倒(dao)是可(ke)以(yi)
報錯為:

然后問群里:都說很明顯啊(a) 證(zheng)書(shu)錯誤,會翻譯的(de)人都知道吧?
但是事實上我們的(de)接口也是使用(yong) https 本地自己的(de)證書也是沒有問題的(de)。故作為一個(ge)運維(wei)人員的(de)我 苦逼的(de)搜索資料 還有就(jiu)是進(jin)行一系列測試
測(ce)試是(shi)從直(zhi)接(jie)(jie)寫demo 調線(xian)上接(jie)(jie)口開始調試,盡管使用線(xian)上接(jie)(jie)口依然這個(ge)錯誤 猜測(ce)是(shi)不是(shi)這個(ge)東西壓(ya)根就沒(mei)有經過什么配(pei)置 相(xiang)當于被寫死了的感(gan)覺~~
后來(lai) 搜索文章 某大牛說道(dao):

案例二:
wx.uploadFile 這個方法同時 上傳圖片(pian) 和文字類,默認不會對返回的數據json處理。。使用(yong) res.data=JSON.parse(res.data); 即可(ke)解決(jue)
前不少人在用wx.uploadFile組件時發現了各種問題,什么編碼問題、網站證書問題等等,但有一個問題是沒有解決的,
就是iOS的手機可以上傳文件,而安卓的手機不行。我也嘗試了各種辦法,比如設置請求時的header 參數,檢查網站服務器權限等等,
但還是無功而返。然后……解決的辦法是…………………………
升級安卓手機端的微信,必須要升級到 6.5.2 版本以上!!!!
這樣就和iOS版的微信版本一樣了,然后就可以正確上傳文件了!!!!!!
一億只草泥馬奔騰而過…………………………
所以建議大家可以用 wx.getSystemInfo 獲取微信版本號判斷一下是否6.5.2以上,否則提示用戶升級微信。
備注:建議升級到最新版本安卓及ios版本,最新版本查詢地址://weixin.qq.com/備注:測試版本無法在上述地址內看到