Android开发 http网络请求失败问题

前言:

最近在开发安卓项目,自己本地搭了一个tomcat服务器挂json文件

项目使用retrofit来发起网络请求,

因为不是okhttp也不是那个啥httpurl,所以在profiler找不到network监控网络

打断点打了好久才发现以下几个错误

问题引入

java.net.SocketException: socket failed: EPERM (Operation not permitted)

java.net.UnknownServiceException: CLEARTEXT communication to www.httpbin.org not permitted by networ

原因

  • 1、Android P(API级别29) 是默认禁止访问http的API的
  • 2、AndroidManifest.xml 网络权限没有开启

解决办法

1、禁止掉明文流量请求的检查

在res的xml文件夹中创建 network_security_config.xml文件

xml 复制代码
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

在AndroidManifet.xml中引入这个配置

ini 复制代码
android:networkSecurityConfig="@xml/network_security_config"

2、为AndroidManifest.xml添加网络权限

进一步配置AndroidManifet.xml文件

ini 复制代码
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

经本人实践,可以访问http链接了

相关推荐
刺客xs18 分钟前
MYSQL数据库----DCL语句
android·数据库·mysql
iReaShare21 分钟前
如何将数据从一部手机传输到另一部手机?
android
慢行的骑兵34 分钟前
Android音视频探索之旅 | C++层使用OpenGL ES实现视频渲染
android·音视频·ndk
iReaShare1 小时前
将CSV联系人导入安卓手机的3种简单方法
android
whysqwhw3 小时前
Okttp之unixdomainsockets模块分析
android
非凡ghost3 小时前
Android System WebView:Android生态的核心组件
android
潇凝子潇3 小时前
MySQL 的 `EXPLAIN` 输出中,`filtered` 属性使用
android·数据库·mysql
fengye2071614 小时前
板凳-------Mysql cookbook学习 (十一--------9)
android·学习·mysql
砖厂小工4 小时前
Compose DSL 与 Kotlin 高阶函数:打造优雅声明式 UI 的秘密武器
android