升级compileSdkVersion至28后JsonArrayRequest无法访问URL
问题原因与解决方案
这是因为Android 9(API Level 28)开始默认禁止明文网络请求(HTTP),系统会自动阻止这类未加密的网络访问,所以你升级compileSdkVersion到28后,原本正常的HTTP URL请求就失败了。
下面给你几种解决思路,按推荐程度排序:
1. 优先切换到HTTPS(推荐)
最安全的做法是把你的服务器URL改成HTTPS形式,比如https://my-domin.ir/api/getcategory。现在大部分服务器都支持HTTPS,这也是Android官方推荐的方向,能避免安全风险。
2. 配置网络安全规则(允许特定域名的明文请求)
如果暂时无法切换到HTTPS,可以通过网络安全配置,只允许你的目标域名使用明文HTTP,这样比全局开启更安全:
步骤1:创建网络安全配置文件
在res/xml目录下新建network_security_config.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <!-- 允许你这个域名的明文请求 --> <domain includeSubdomains="true">my-domin.ir</domain> </domain-config> </network-security-config>
步骤2:在Manifest中引用配置
打开AndroidManifest.xml,在application标签里添加networkSecurityConfig属性:
<application ... android:networkSecurityConfig="@xml/network_security_config"> ... </application>
3. 全局允许明文请求(不推荐)
这种方式会让整个应用都允许明文HTTP请求,安全性较低,仅作为临时测试方案:
直接在AndroidManifest.xml的application标签里添加usesCleartextTraffic="true":
<application ... android:usesCleartextTraffic="true"> ... </application>
另外,检查你的Volley请求代码,确保没有其他配置问题——从你提供的代码来看,请求逻辑本身是没问题的,核心问题就是API28带来的明文请求限制。
内容的提问来源于stack exchange,提问作者user9862540
相关产品推荐
相关产品推荐

