Java生成微信小程序二維碼并顯示在HTML頁面:如何解決Base64編碼顯示失敗的問題?

Java生成微信小程序二維碼并顯示在HTML頁面:如何解決Base64編碼顯示失敗的問題?

本文將指導您如何使用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編碼的二維碼圖片數據,前端即可正確顯示二維碼。

Java生成微信小程序二維碼并顯示在HTML頁面:如何解決Base64編碼顯示失敗的問題?

以上就是Java生成

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享