本文將指導您如何使用Java生成包含參數的微信小程序二維碼,并將其正確顯示在html頁面上,特別解決Base64編碼顯示失敗的問題。 許多開發者在將Java后端生成的二維碼顯示到前端時,會遇到Base64編碼顯示失敗的難題。 問題的關鍵在于正確處理微信小程序二維碼API的響應結果,并將其以合適的格式傳遞給前端。
之前的代碼嘗試直接使用Base64編碼二維碼圖片數據,但忽略了API返回的是圖片數據流,而非Base64字符串。 因此,需要修改Java后端代碼,將二進制圖片數據轉換為Base64字符串。
以下是改進后的Java代碼片段:
String AccessToken = getAccessToken(); // 調用微信接口生成二維碼 URL url = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setDoOutput(true); connection.setDoInput(true); PrintWriter writer = new PrintWriter(connection.getOutputStream()); JSONObject paramJson = new JSONObject(); paramJson.put("scene", "id=1"); paramJson.put("page", "/pages/index/index"); writer.write(paramJson.toString()); writer.flush(); // 處理圖片數據流,轉換為Base64字符串 InputStream inputStream = connection.getInputStream(); byte[] bytes = inputStream.readAllBytes(); // 使用readAllBytes()讀取所有字節 String base64Encoded = Base64.getEncoder().encodeToString(bytes); // 使用Base64.getEncoder()進行編碼 inputStream.close(); // 將Base64字符串返回給前端 // ... (此處根據您的框架,例如spring mvc,將base64Encoded返回給前端) ...
前端HTML代碼(無需修改)仍然使用:
立即學習“Java免費學習筆記(深入)”;
@@##@@</img>
對應的JavaScript代碼(例如使用axios):
axios.get('/qrcode/test', { params: { code: text } }).then(function (res) { var data = res.data.data; that.src = "data:image/jpeg;base64," + data; });
關鍵改進在于使用inputStream.readAllBytes()一次性讀取所有字節,并使用Base64.getEncoder().encodeToString()進行Base64編碼,確保圖片數據完整性。 請確保已引入必要的Base64編碼庫。 同時,請檢查您的網絡請求和后端數據返回機制是否正確配置。 通過這些修改,Java后端可以正確生成并返回Base64編碼的二維碼圖片數據,前端即可正確顯示二維碼。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦