关于okhttp3网络框架的onfailure错误

刚开始用okhttp3框架时遇到了很多坑,而且编程技术的发展日新月异,看网上教程有时候会看到一些比较旧的方法,因此很可能会走很多弯路。我本人就是在刚开始使用okhttp3时遇到很多问题,书上、网上的教程或多或少有些跟不上。今天我主要讲的是使用okhttp3的基础和时遇到的 onfailure( ) 问题,顺便也为自己做个笔记。

参考链接:
https://www.jianshu.com/p/3600483f9c9f

1. okhttp3基础

这个框架我也不介绍了。

首先我用了两个控件,分别是Button和Textview,点击Button后就会发送请求获取信息,Textview则是显示获取到的信息。

 <Buttonandroid:id="@+id/b1"android:textSize="50dp"android:text="click me"android:layout_width="match_parent"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/t1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello"android:textSize="50dp"/>

接着就是JAVA代码了

public class MainActivity extends AppCompatActivity  implements View.OnClickListener {private Button b1;private TextView t1;private static final String TAG = "MainActivity"; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn1=findViewById(R.id.b1);t1=findViewById(R.id.t1);btn1.setOnClickListener(this);}@Overridepublic void onClick(View view) {if(view.getId()==R.id.b1)sendRequest();}public void sendRequest() {//1,创建OKHttpClient对象OkHttpClient okHttpClient = new OkHttpClient();String url = "http://www.baidu.com"; //注意我这里用的是http而不是https//2,创建一个Requestfinal Request request = new Request.Builder().url(url).build();//3,创建一个call对象Call call = okHttpClient.newCall(request);//4,将请求添加到调度中call.enqueue(new Callback() {@Overridepublic void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {Log.d(TAG, "onResponse:response ");        //用来看是否有响应final String data=response.body().string();runOnUiThread(new Runnable() {@Overridepublic void run() {t1.setText(data);}});}@Overridepublic void onFailure(@NotNull Call call, @NotNull IOException e) {Log.d(TAG, "onFailure: failure");   //用来看是否失败}});}
}

到了这里okhttp3的应用已经完成了,接着我点击按钮,发现logcat里面打印出来的是 onfailure ,这是为什么呢?

我上网查了一下,原来是Android P全面禁止了非https链接,并严格审查网站的CA证书 详情请看这里
但是国内的很多网站都是非https的,怎么办呢?

这时候我们需要在自己设置非安全连接。

非安全连接设置

首先,我们在res/xml下建立我们自己的network security config文件,名字任意,可以叫做network_security_config.xml。

如图所示

接着在里面设置

<network-security-config><!--默认允许所有网址使用非安全连接--><base-config cleartextTrafficPermitted="true" />
</network-security-config>

再在AndroidManifest.xml里加一段代码,注意@xml/network_security_config就是刚刚命名的名字。

<applicationandroid:networkSecurityConfig="@xml/network_security_config"....................</application>

做完以后,你会发现http网络请求就可以通过啦。

关于okhttp3网络框架的onfailure错误相关推荐

  1. Java EE 架构设计——基于okhttp3 的网络框架设计

    转载请注明出处:http://blog.csdn.net/smartbetter/article/details/77893903 本篇文章带大家设计一套满意业务需求.代码健壮高效(高内聚低耦合)并且 ...

  2. Android网络框架okhttp3简单封装

    1:在demo得build文件中添加依赖(这里以3.8.1版本为例) dependencies {compile 'com.squareup.okhttp3:okhttp:3.8.1' } 2:对网络 ...

  3. 鸿蒙开发之网络框架搭建,MVP+Retrofit2+okhttp3+Rxjava2+RxHarmony

    抓住人生中的一分一秒,胜过虚度中的一月一年! 小做个动图开篇引题 鸿蒙背景 2020年9月10号,鸿蒙2.0(HarmonyOS 2.0)系统正式发布,鸿蒙2.0面向应用开发者发布Beta版本,在20 ...

  4. Android网络框架-OkHttp3.0总结

    一.概述 OkHttp是Square公司开发的一款服务于android的一个网络框架,主要包含: 一般的get请求 一般的post请求 基于Http的文件上传 文件下载 加载图片 支持请求回调,直接返 ...

  5. 一个整合OkHttp 、Retrofit 、Volley 、RxJava、Novate多种开源网络框架的项目,高度的封装和集成,Android中Web网络请求一行代码解决

    一个整合OkHttp .Retrofit .Volley .RxJava.Novate多种开源网络框架的项目,高度的封装和集成,Android中Web网络请求一行代码解决 AndroidHttp 一个 ...

  6. 网络框架 - 收藏集 - 掘金

    浅谈 Retrofit 封装 - 让框架更加简洁易用 - Android - 掘金 尊重他人的劳动成果,转载请标明出处:http://blog.csdn.net/gengqiqu..., 本文出自:[ ...

  7. 【OkHttp】OkHttp 源码分析 ( 网络框架封装 | OkHttp 4 迁移 | OkHttp 建造者模式 )

    OkHttp 系列文章目录 [OkHttp]OkHttp 简介 ( OkHttp 框架特性 | Http 版本简介 ) [OkHttp]Android 项目导入 OkHttp ( 配置依赖 | 配置 ...

  8. Android 网络框架 Retrofit2.0介绍、使用和封装

    前言 时至今日,Android的网络框架不再像之前那么到处都是,随着Google把 HttpClient直接删掉,似乎意味着Android越来越成熟.网络框架中的佼佼者Volley也不再那么光鲜,取而 ...

  9. 架构师之路-网络框架的搭建(高逼格)

    一,了解常见的框架 1,你已经工作量3年不等或也许是菜鸟,只要接触Android开发那么在项目中必不可少的就是一些第三方框架:常见的网络请求框架,图片加载框架等- 我们具体了解下常见的网络框架: 网络 ...

最新文章

  1. ASP.NET2.0的multiview和wizard控件
  2. 从父页面在iframe中调用JavaScript代码
  3. Linux学习笔记033_10
  4. 码农何苦为难码农:谈谈程序员面试那些事
  5. 计算机组成原理(哈工大刘宏伟)
  6. 实验三 图的操作与实现
  7. 三星手机com.android.settings,三星手机恢复出厂设置方法【具体步骤】
  8. JavaScript实现detectDirectedCycle检测定向循环算法(附完整源码)
  9. java中搭建流水线,部署流水线搭建小记:Docker、Jenkins、Java 和 Couchbase
  10. 性别有什么用_为啥不让男孩玩布娃娃?别让你的“性别偏见”,给孩子的人生设限...
  11. http://www.od85c.com.cn/html/,OllyDbg script for unpacking Enigma 4.xx and 5.xx
  12. eclipse的优化操作
  13. 【数据结构与算法】二叉树结点最小深度求解算法
  14. 前端向后端发送请求,后端返回的一个值的请求的ajax.get();方法
  15. Bootstrap-代码样例
  16. Android Listview设置每条信息的间距
  17. mysql 嵌套查询优化_MySQL——优化嵌套查询和分页查询
  18. 小白交易第一站—50EX云合约交易平台
  19. 开始做公众号的一些方法技巧总结
  20. cd/etc 文件目录浅解

热门文章

  1. win7右键计算机死机,win7关机时死机
  2. 阿里资深架构师推荐 -- 如果正确的开启领域驱动设计
  3. 二分法总结(超级详细)附带图解
  4. Exchange邮箱服务器的可用性(转)
  5. 服务器安装 Ubuntu 系统完成重启后花屏、紫屏解决办法
  6. python turtle画四叶草的步骤_10分钟轻松学会 Python turtle 绘图
  7. 技术教程 网站开发 Asp
  8. ESP32蓝牙+EC11旋转编码器实现对电脑音量控制
  9. Discuz!论坛运营之修改帖子10000字节长度限制最大字数的方法
  10. python中用于表示逻辑与、逻辑或、逻辑非运算_逻辑非,逻辑与,逻辑或和非,与,或的区别...