Android 9.0强制使用https,会阻塞http请求,如果app使用的第三方sdk有http,将全部被阻塞

Android 9.0强制使用https,会阻塞http请求,如果app使用的第三方sdk有http,将全部被阻塞。
出现

UnknownServiceException: CLEARTEXT communication to localhost not permitted by network security policy

或者

IOException java.io.IOException: Cleartext HTTP traffic to * not permitted

就说明,你需要去兼容了。最简单的兼容方式是在AndroidManifest文件的application设置

android:usesCleartextTraffic="true"

这是第一种方式。
可以参考stackoverflow的回答

Android P - CLEARTEXT communication not permitted by network security policy

不允许明文通信,

第二种方式:网络安全性配置

在AndroidManifest文件的application节点配置

android:networkSecurityConfig="@xml/network_security_config"

xml中的具体配置。
可以参考我的配置



    
    
        
            
            
        
    
       
    
        xxx.xxx.com
        
        
        
    
    
    
        
        
            
            
        
    

第二种方式才是最好的方式,具体参考官方文档security-config

还有就是如果在请求https的时候抛出SSLHandshakeException

javax.net.ssl.SSLHandshakeException:
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 

请检查手机是不是设置了代理。android7.0之后不特殊处理,是无法抓取https。
把android官方文档放这里,可以自己查阅通过https和SSL确保安全(https://developer.android.com/training/articles/security-ssl?hl=zh-cn)



转载自链接:https://www.jianshu.com/p/5f65656d0a06

你可能感兴趣的:(andorid,9.0,https)