关于OkHttp的使用可以参考
OkHttp基本使用教程连接
一.线程问题
主线程不能设置网络链接,可以新建线程添加网络链接
new Thread(new Runnable() {
@Override
public void run() {
//实例
}
}).start();
二.网络权限问题
在AndroidManifest.xml文件中添加一下网络权限,和网络状态权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
如果添加上述代码段还是出现以下错误
java.net.SocketException: socket failed: EPERM (Operation not permitted)
卸载在模拟器里面的程序,重新安装,不需要删除模拟器。
原因可能是:一开始网络请求时我没有赋予网络权限,我重新给程序赋予权限时我并没有卸载程序,只是重新编译,系统并没有获取到配置文件中的权限,因此需要卸载重新安装。
三.明文流量问题
错误提示:
java.net.UnknownServiceException: CLEARTEXT communication ** not permitted by network security policy
解决办法
在AndroidManifest.xml文件中application代码段下添加,可以使用明文连接
android:usesCleartextTraffic="true"
这里意思是应用程序是否打算使用明文网络流量,例如明文HTTP。目标API级别为27或更低的应用程序的默认值为“ true”。面向API级别28或更高级别的应用默认为“ false”
原因:为保证用户数据和设备的安全,Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输。
感谢解决方案https://blog.csdn.net/MRYZJ/article/details/101780180