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

Android 網路請求失效:權限正確卻無法訪問網路的排查指南

     編輯:程式設計綜合問答

現象描述

AndroidManifest.xml 已宣告 <uses-permission android:name="android.permission.INTERNET"/>,但 WebView.loadUrl() 或 HttpClient 請求均無回應,更換 SDK 版本也無效。注意:權限名稱必須全小寫 android.permission.INTERNET,大寫會導致識別失敗。

排查清單

  1. 確認請求是否真正發出:使用 Log.d() 印出請求 URL、Header,或抓包工具 (Charles/Fiddler) 檢查流量。
  2. 檢查網路安全配置:Android 9+ (API 28) 預設禁止明文 HTTP,需在 res/xml/network_security_config.xml 允許或全面改用 HTTPS。
  3. 驗證 WebView 設定:
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setWebViewClient(new WebViewClient()); // 處理頁面跳轉
    
  4. 替換網路庫:嘗試 OkHttp、Volley 或 Retrofit,觀察是否為舊版 HttpClient 移除導致 (API 23+ 已移除)。
  5. 檢查裝置/模擬器網路:模擬器需啟用「Use detected proxy」或手動設定代理;實機確認 Wi-Fi/行動網路正常。

常見誤區

  • 權限寫成 ANDROID.PERMISSION.INTERNET (大寫) → 系統不識別,必須全小寫。
  • 以為加了權限就萬事大吉,忽略了 Android 9+ 的明文流量限制。

總結

權限只是前提,關鍵在於「請求是否發出」與「伺服器是否響應」。建議優先加入網路日誌攔截器,定位是客戶端發送失敗、還是伺服器無回應/被防火牆攔截。

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