首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Volley Bad URL 運行時錯誤:URL 字串含非法字元或為空,需檢查 JSON 解析邏輯與圖片 URL 獲取流程

     編輯:程式設計疑難解答

錯誤 `Java.lang.RuntimeException: Bad URL` 表示傳給 `ImageRequest`/`NetworkImageView` 的 URL 字串**格式不合法**(含空格、中文未編碼、協議缺失、或為 `null`/`""`)。

常見原因排查

  1. JSON 解析錯誤導致 URL 為空:
    
    slider_pic_URL = picJson.getString("slider_pic"); // 可能是 JSON 陣列字串,非單一 URL
    picList = new JSONArray(slider_pic_URL);          // 若 slider_pic_URL 本身是 "[\"url1\",\"url2\"]" 字串,這行會拋 JSONException
    
    建議先 `Log.d("URL", slider_pic_URL)` 印出原始字串,確認結構。
  2. URL 含中文/特殊字元未編碼:
    
    String encoded = URLEncoder.encode(rawUrl, "UTF-8"); // 僅編碼路徑/查詢參數部分,勿編碼協議://
    
    或用 `Uri.parse(rawUrl).buildUpon().build().toString()` 讓系統標準化。
  3. HealthMap 取值邏輯導致錯誤 URL:
    
    head_img0.put("head_img", HealthMap.get("key", isContinue));
    // 若 get 返回 null 或非 URL 字串,直接塞入廣告輪播會報 Bad URL
    
    需加防禦:

String url = (String) HealthMap.get("key", false);
if (url != null && URLUtil.isValidUrl(url)) {
    head_img0.put("head_img", url);
} else {
    Log.w("Ad", "Invalid ad URL: " + url);
}

調試建議

  • 在 `initViews()` 前打印所有即將載入的 URL。
  • 用瀏覽器打印的 URL 驗證是否可訪問。
  • 捕獲 `MalformedURLException` 包裝 Volley 請求,印出堆疊定位具體行號。

核心:**Bad URL 99% 是字串內容問題,而非 Volley 本身 Bug**。逐級印出 URL 字串即可定位。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved