Android studio使用OKGO的POST请求访问http失败的解决方法

发布时间:2020-12-17 发布网站:编程之家
编程之家收集整理的这篇文章主要介绍了Android studio使用OKGO的POST请求访问http失败的解决方法编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

前几天在旧手机(版本是Android7)上调试一个app,用OKGO的post请求连接服务器登录一直很正常。今天旧手机不在身边,用自己的手机调试,就出现网络请求失败的问题,弹onError()里自己写的Toast提示。反复检查了手机确实没有对app关闭网络权限,USB调试都打开了。于是在网上搜索了一些方法,尝试后问题得到解决。在这记录一下这两种解决方案。

1.targetSdkVersion 降到27以下

在build.gradle中把targetSdkVersion版本从30降为27以下(也就是Android8.0以下),Sync Now一下或者在File中点击Sync project with Gradle files同步引用库,再重新启动app,发现网络请求可以了,问题解决。

2.允许http请求

也可以选择不降targetSdkVersion版本,直接在 res 下新增一个 xml 文件,创建一个名为:network_security_config.xml 文件(名字随便起),内容是:

<?xml version="1.0" encoding="utf-8"?>
<!--Android9以上机型 https请求适配-->
<network-security-config>
    base-config cleartextTrafficPermitted="true" />
</>

然后在AndroidManifest.xml文件下的application标签增加属性

android:networkSecurityConfig="@xml/network_security_config

实例如下图所示:

application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher_round"
        android:label="@string/app_name"
        android:roundIcon
        android:supportsRtl
        android:theme="@style/AppTheme"
        android:networkSecurityConfig="@xml/network_security_config">
        activity =".LoginActivity">
            intent-filter>
                action ="android.intent.action.MAIN" />
                category ="android.intent.category.LAUNCHER" />
            activity=".HomeActivity"></application>

再次运行程序,网络请求成功,问题解决。

3.引起问题的原因

在Android 8加强了系统安全权限之后,Android P 又限制了明文流量的网络请求,非加密的流量请求都会被系统直接禁止掉,目前网络访问基本都从原来的http替换成https也是为了加强安全性。如果当前应用的请求是 HTTP 请求,而非 HTTPS,这样系统就会禁止当前应用进行该请求,如果 WebView 的 URL 用 HTTP 协议,同样会出现加载失败,将无法显示WebView的内容,HTTPS 则不受影响。

总结

以上是编程之家为你收集整理的Android studio使用OKGO的POST请求访问http失败的解决方法全部内容,希望文章能够帮你解决Android studio使用OKGO的POST请求访问http失败的解决方法所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入编程之家官方QQ群:1065694478
编程之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ”
精选程序员所需精品干货内容!