文章目录

  • 零、学习目标
  • 一、okhttp3框架概述
  • 二、案例演示 - 利用okhttp3下载网页
    • (一)运行效果
    • (二)涉及知识点
    • (三)实现步骤
      • 1、创建安卓应用【DownloadWebPageByOkHttp3】
      • 2、将背景图片拷贝到drawable目录
      • 3、主布局资源文件activity_main.xml
      • 4、字符串资源文件strings.xml
      • 5、在模块构建文件里添加对OkHttp的依赖
      • 6、在项目清单文件里授权访问因特网
      • 7、主界面类 - MainActivity
      • 8、启动应用,查看效果
  • 三、补充阅读:值得灵魂拷问的三个问题

零、学习目标

  1. 了解okhttp3框架的作用与优点
  2. 能使用okhttp3框架访问网络资源

一、okhttp3框架概述

okhttp3是一款优秀的HTTP框架,它支持get请求和post请求,支持基于Http的文件上传和下载,支持加载图片,支持下载文件透明的GZIP压缩,支持响应缓存避免重复的网络请求,支持使用连接池来降低响应延迟问题。

二、案例演示 - 利用okhttp3下载网页

(一)运行效果

(二)涉及知识点

  1. 线性布局(LinearLayout)
  2. 标签(TextView·)
  3. 文本编辑框(EditText)
  4. 按钮(Button)
  5. 消息处理器(Handler)
  6. okhttp3框架
    – Call
    – Callback
    – OkHttpClient
    – Request
    – Response

(三)实现步骤

1、创建安卓应用【DownloadWebPageByOkHttp3】


2、将背景图片拷贝到drawable目录

3、主布局资源文件activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/background"android:orientation="vertical"android:padding="20dp"><EditTextandroid:id="@+id/edtUrl"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="@string/input_url"android:textSize="20sp"android:lines="2" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:layout_marginBottom="10dp"android:gravity="center"android:orientation="horizontal"><Buttonandroid:id="@+id/btnDownload"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doDownload"android:textSize="20sp"android:text="@string/download" /><Buttonandroid:id="@+id/btnClear"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClear"android:textSize="20sp"android:text="@string/clear" /></LinearLayout><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="#bbbbbb" /><ScrollViewandroid:id="@+id/svContent"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/tvContent"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#0000ff"android:textSize="18sp" /></ScrollView>
</LinearLayout>

4、字符串资源文件strings.xml

<resources><string name="app_name">利用okhttp3下载网页</string><string name="input_url">请输入网址</string><string name="download">下载</string><string name="clear">清空</string>
</resources>

5、在模块构建文件里添加对OkHttp的依赖

6、在项目清单文件里授权访问因特网

7、主界面类 - MainActivity

package net.hw.download_webpage_by_okhttp3;import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;import java.io.IOException;import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;/*** 功能:利用okhttp3下载网页* 作者:华卫* 日期:2021年01年03日*/
public class MainActivity extends AppCompatActivity {private EditText edtUrl; // 网址编辑框private TextView tvContent; // 显示网页内容的标签private String content; // 下载内容private Handler handler; // 消息处理器@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 利用布局资源文件设置用户界面setContentView(R.layout.activity_main);// 通过资源标识符获取控件实例edtUrl = findViewById(R.id.edtUrl);tvContent = findViewById(R.id.tvContent);// 创建消息处理器handler = new Handler() {@Overridepublic void handleMessage(@NonNull Message msg) {super.handleMessage(msg);if (msg.what == 0x001) {// 让标签显示下载内容tvContent.setText(content);}}};}/*** 下载按钮单击事件处理方法** @param view*/public void doDownload(View view) {// 获取用户输入的网址String strUrl = edtUrl.getText().toString();// 网址非空校验if (strUrl.length() == 0) {Toast.makeText(getApplicationContext(), "请输入网址", Toast.LENGTH_SHORT).show();edtUrl.requestFocus();return;}// 创建OkHttp客户端OkHttpClient mOkHttpClient = new OkHttpClient();// 创建请求对象Request request = new Request.Builder().url(strUrl).build();// 创建调用对象Call call = mOkHttpClient.newCall(request);// 采用异步方式获取响应call.enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {Log.d("message", "网页下载失败!");}@Overridepublic void onResponse(Call call, Response response) throws IOException {// 获取响应正文内容content = response.body().string();// 向主线程发送消息handler.sendEmptyMessage(0x001);}});}/*** 清空单击事件处理方法** @param view*/public void doClear(View view) {// 清空网址编辑框edtUrl.setText("");// 清空网页内容标签tvContent.setText("");// 让网址编辑框获取焦点edtUrl.requestFocus();}
}

8、启动应用,查看效果

三、补充阅读:值得灵魂拷问的三个问题

有的下属会认真地执行上级的命令,即使上级的命令只是拍脑袋想出来的;有的学生会认真地完成老师的作业,但从来没有想过学习知识是为了干什么;有的企业家一年到头忙得焦头烂额,殚精竭虑,但从来都不思考一下自己的使命和责任。因此,我们要再修正一下:苟且的反义词是有信仰的认真。区别就在这里,能不能得到苟且红利,秘诀就在这里。

请你认真地先问自己三个问题:

你是不是真的相信这个时代?
你是不是真的相信你自己?
你是不是真的相信你的用户?

我们这个时代比过去更加动荡,未来还会有更多的不确定性,但你要看到,我们这个时代的基本盘是什么,我们的底层逻辑有没有改变,我们的操作系统有没有更换。如果你真的相信这个时代,你会看得更远,也会让未来折算成更高的现值。你考虑的不是一时的得失,而是长久之计。于是,你自然会有更强的定力,更宏大的战略。你也会愿意为看起来费时费力、需要积累、需要沉淀、需要储备的事情付出更多的资源。你知道,时间是你的朋友,时代会为你加持,长期主义能给你带来更多的复利。
你会感慨生活的不易,社会阶层在固化,机会似乎越来越少,但你要看到,你这一代人是站在前人的肩膀上的,你们会更从容,也会把人生的价值看得更为真切。人的一生,不是用金钱就能交换的。你来到世间,是为了创造更美好的事物。这事物可能恢宏巨大,也可能微小精致,但美好的东西才能给你带来愉悦,才能让你真正入迷,进入一种物我两忘的心流状态。那样你才会像巴菲特说的那样,“每天跳着舞去上班”。你要相信自我到什么程度呢?你要到为自己创造出来的东西真心感到赞叹。你要发自肺腑地感慨:这么美好的东西居然是我创造出来的!这么美好的东西只能是我创造出来的!

你会觉得用户的需求越来越难以捉摸,过去行之有效的营销办法似乎都不管用了。你可能急于找到新的赛道、新的模式。可这世界上哪里有那么多新的赛道、新的模式!最重要的事情是你是否真的理解了你的用户。你和你的用户接近到了能促膝谈心的距离吗?你是否能够体察他们的喜怒哀乐?再平凡的人也有自己的尊严和梦想,你能够感受到他们的那些看起来卑微,卑微到他们自己都不愿启齿的追求吗?你能够理解他们每一个人独特的习惯和经历吗?你有没有触及他们隐藏在内心深处的那个最柔软的地方?

这三个问题,值得灵魂拷问。

安卓学习笔记44:开源框架okhttp3入门相关推荐

  1. Python学习笔记--10.Django框架快速入门之后台管理admin(书籍管理系统)

    Python学习笔记--10.Django框架快速入门之后台管理 一.Django框架介绍 二.创建第一个Django项目 三.应用的创建和使用 四.项目的数据库模型 ORM对象关系映射 sqlite ...

  2. 【学习笔记】爬虫框架Scrapy入门

    一. Scrapy简介.架构.数据流和项目结构 二. Scrapy入门 1. Scrapy架构由哪些部分组成? 1.1 Scrapy简介 Scrapy是:由Python语言开发的一个快速.高层次的屏幕 ...

  3. 2020年安卓学习笔记目录

    文章目录 一.讲课笔记 二.安卓案例 三.安卓实训项目 四.学生安卓学习博客 五.安卓课后作业 (一)界面设计练习 1.制作登录界面 2.制作部队管理界面 3.制作灭火救援界面 4.制作交付界面 5. ...

  4. 前端学习笔记:Bootstrap框架入门

    前端学习笔记:Bootstrap框架入门 一.Bootstrap概述 1.基本信息 ​Bootstrap,来自 Twitter,是目前很受欢迎的前端框架.Bootstrap 是基于 HTML.CSS. ...

  5. java mvc框架代码_JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码)

    原标题:JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码) JavaEE体系结构包括四层,从上到下分别是应用层.Web层.业务层.持久层.Struts和SpringMVC是Web层的 ...

  6. 【完结】给新手的12大深度学习开源框架快速入门项目

    文/编辑 | 言有三 这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpen ...

  7. 【github干货】主流深度学习开源框架从入门到熟练

    文章首发于微信公众号<有三AI> [github干货]主流深度学习开源框架从入门到熟练 今天送上有三AI学院第一个github项目 01项目背景 目前深度学习框架呈百家争鸣之态势,光是为人 ...

  8. 【安卓开发系列 -- APP 开源框架】IO 框架 OKIO

    [安卓开发系列 -- APP 开源框架]IO 框架 OKIO [1]OKIO的整体框架 [1.1]OKIO的整体框架图示 [1.2]OKIO的优势 CPU和内存消耗低,OKIO采用了segment机制 ...

  9. Hadoop学习笔记—15.HBase框架学习(基础知识篇)

    Hadoop学习笔记-15.HBase框架学习(基础知识篇) HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase ...

最新文章

  1. CIFS NFS SMB Samba 文件共享协议 介绍
  2. python字符串split_「干货」Python字符串中的split方法
  3. BP神经网络预测实例
  4. future java 原理_Java线程池FutureTask实现原理详解
  5. wxWidgets:wxBitmapButton类用法
  6. 程序员毕业的10年里
  7. 用BluePrint进行Web页面设计
  8. matlab对多个矩阵循环,MATLAB:在不使用循环的情况下提取矩阵的多个部分
  9. [翻译]Writing Custom Wizards 编写自定义的向导
  10. 为 VS Code 配置 C++ task,增加外部库文件并且自动运行脚本 | 应用 powershell 语句
  11. 完整的Socket代码
  12. iOS开发需要哪些图片?
  13. Scintilla Markers Margins
  14. 分享抖音上热门技巧!短视频涨粉+运营攻略!
  15. 微信第三方平台服务商各种坑必读(有问必答)授权事件接收配置,消息与事件接收配置
  16. HDU 4826Labyrinth(dp)
  17. Centos8安装GitLab14.2开源代码托管工具
  18. 揭开均线系统的神秘面纱_揭开极限编程的神秘面纱,重新探讨“ XP蒸馏”,第3部分...
  19. 夜晚怎么能不吃宵夜呢
  20. 年月日时天干地支推算(农历、公历)

热门文章

  1. 【华为云技术分享】基于自动机器学习的心脏病预测模型(1)
  2. 【响应式编程的思维艺术】 (5)Angular中Rxjs的应用示例
  3. 云上自动化 vs 云上编排
  4. 具有固定名称mysql.data_SQLServer数据库之未找到具有固定名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架 解决方案...
  5. Think in Java第四版 读书笔记5第11章
  6. The tempotron: a neuron that learns spike timing–based decisions 事件驱动
  7. 计算机图形学E7——裁剪-交互式Liang-Barskey矩形窗口裁剪直线
  8. 一分钟关闭百度的搜索热点和相关人物
  9. AI开发者顶会,这一次,人人都可以参加!
  10. sql中如何统计各种零件的总数量_数据蒋堂 | SQL是描述性语言?