专栏首页刘望舒Android网络编程(六)OkHttp3用法全解析

Android网络编程(六)OkHttp3用法全解析

相关文章 Android网络编程(一)HTTP协议原理 Android网络编程(二)HttpClient与HttpURLConnection Android网络编程(三)Volley用法全解析 Android网络编程(四)从源码解析volley Android网络编程(五)OkHttp2.x用法全解析

前言

上一篇介绍了OkHttp2.x的用法,这一篇文章我们来对照OkHttp2.x版本来看看,OkHttp3使用起来有那些变化。当然,看这篇文章前建议看一下前一篇文章Android网络编程(五)OkHttp2.x用法全解析。

1.使用前准备

Android Studio 配置gradle:

  compile 'com.squareup.okhttp3:okhttp:3.2.0'
  compile 'com.squareup.okio:okio:1.7.0'

添加网络权限:

    <uses-permission android:name="android.permission.INTERNET"/>

2.异步GET请求

惯例,请求百度:

        private void getAsynHttp() {
        mOkHttpClient=new OkHttpClient();
        Request.Builder requestBuilder = new Request.Builder().url("http://www.baidu.com");        //可以省略,默认是GET请求
        requestBuilder.method("GET",null);
        Request request = requestBuilder.build();
        Call mcall= mOkHttpClient.newCall(request);
        mcall.enqueue(new Callback() {            @Override
            public void onFailure(Call call, IOException e) {

            }            @Override
            public void onResponse(Call call, Response response) throws IOException {                if (null != response.cacheResponse()) {
                    String str = response.cacheResponse().toString();
                    Log.i("wangshu", "cache---" + str);
                } else {
                    response.body().string();
                    String str = response.networkResponse().toString();
                    Log.i("wangshu", "network---" + str);
                }
                runOnUiThread(new Runnable() {                    @Override
                    public void run() {
                        Toast.makeText(getApplicationContext(), "请求成功", Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });
    }

与2.x版本并没有什么不同,比较郁闷的是回调仍然不在UI线程。

本文分享自微信公众号 - 刘望舒(liuwangshuAndroid)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-05-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Gradle入门前奏

    在文章为什么现在要用Gradle?中,我们学习了常见的构建工具,以及Gradle与这些构建工具相比有那些不同的特性。这一篇文章我们接着来学习Gradle入门需要...

    用户1269200
  • 浅谈Android进阶之路

    过去十年是移动互联网蓬勃发展的黄金期,相信每个人也都享受到了移动互联网红利,在此期间,移动互联网经历了曙光期、成长期、成熟期、现在来说已经进入饱和期。依然记得在...

    用户1269200
  • 你真的了解Activity的启动模式吗?

    当面试官说请你介绍一下activity启动模式,大多数人都能整两句,什么栈顶复用啊栈内复用啊,不过,你确定你真的懂启动模式吗?

    用户1269200
  • 【前端进阶基础】VUE响应式数据原理 订阅-发布模式解析

    关于虚拟DOM的核心算法,我们上一章已经基本解析过了,详细的见 React && VUE Virtual Dom的Diff算法统一之路 snabbdom.js解...

    super.x
  • 实现应用于AlphaGo得增强式学习算法,代码实现2

    上一节我们完成了围棋机器人,也就是Agent,它所面临的环境就是当前棋盘状况。Agent有自己的“脑子”,也就是它自己附带着一个经过人类棋手所产生棋盘数据训练后...

    望月从良
  • Css3 Animation 动画原则二

    运动不倾向于突然发生。在现实生活中,无论是一个球在掉到桌子前就开始滚动,或是一个人屈膝准备起跳,运动通常有着某种事先的累积。

    grain先森
  • 64位内核开发第十二讲,进程监视,ring3跟ring0事件同步.

    事件状态: 有信号 Signaled 无信号 Non-signaled 事件类别 自动恢复 Synchronization 自动设置 不自动恢复. N...

    IBinary
  • Python3中byte和string之

    用户2398817
  • update inner join mysql where 链表更新

    哎,考虑到自增id不容易用在分布复制中,手欠用UUID做了主键。而mysql好像没有uuid类型只能用字符串,感觉好不方便,后来看到tidb是支持自增id的,而...

    xiny120
  • 查找表用作组合逻辑单元

    查找表的一个重要功能是用作逻辑函数发生器。本质上,逻辑函数发生器存储的是真值表(Truth Table)的内容,而真值表则是通过布尔表达式获得的。在Vivado...

    Lauren的FPGA

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动