Android简易实战教程--第四十七话《使用OKhttp回调方式获取网络信息》
在之前的小案例中写过一篇使用HttpUrlConnection获取网络数据的例子。在OKhttp盛行的时代,当然要学会怎么使用它,本篇就对其基本使用做一个介绍,然后再使用它的接口回调的方式获取相同的数据。因为它封装的很好了,并不需要我们去做封装,只需要写少量的代码就可以获取到复杂的网络数据了。
一、OKhttp的最基本使用。
还是直接使用代码来说话:
1、添加依赖:
Github网址:https://github.com/square/okhttp
compile 'com.squareup.okhttp3:okhttp:3.5.0'
2、等待构建成功后:在主活动中直接使用它的API
1、创建布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/send_request" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Send Request" /> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/response" android:layout_width="match_parent" android:layout_height="wrap_content" /> </ScrollView> </LinearLayout>
2、主活动中的代码:
public class MainActivity extends Activity implements View.OnClickListener {private Button sendRequest; private TextView responseText; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sendRequest = (Button) findViewById(R.id.send_request); responseText = (TextView) findViewById(R.id.response); sendRequest.setOnClickListener(this); }@Override public void onClick(View v) {if (v.getId() == R.id.send_request) {sendRequestWithOKHttp(); }}private void sendRequestWithOKHttp() {// 开启线程来发起网络请求 new Thread(new Runnable() {@Override public void run() {try {OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder().url("http://www.baidu.com").build(); Response response = client.newCall(request).execute(); String responseData = response.body().string(); show(responseData); } catch (IOException e) {e.printStackTrace(); }}}).start(); }public void show(final String finalDatas){runOnUiThread(new Runnable() {@Override public void run() {responseText.setText(finalDatas); }}); }}
这样我们就成功获取到了网络的数据,运行程序我们可以看到:
二、使用OKhttp提供的接口回调
1、定义一个HttpUtils类。加入如下静态方法:
//使用OKhttp,OKhttp给封装好了回调,我们直接使用即可 public static void sendOKHttpRequst(final String address, final okhttp3.Callback callback){new Thread(new Runnable() {@Override public void run() {OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder().url(address).build(); client.newCall(request).enqueue(callback); }}).start(); }
2、使用工具类,使用回调方法
//使用OKhttp工具类 findViewById(R.id.btn_okhttp).setOnClickListener(new View.OnClickListener() {@Override public void onClick(View v) {HttpUtils.sendOKHttpRequst(address, new Callback() {@Override public void onFailure(Call call, IOException e) {//对异常情况处理 Log.e("MainActivity","错误信息是" + e.toString()); }@Override public void onResponse(Call call, final Response response) throws IOException {//得到服务器返回的数据response runOnUiThread(new Runnable() {@Override public void run() {try {mTextView.setText(response.body().string()); } catch (IOException e) {e.printStackTrace(); }}}); }}); }}); }
这里只需要给出主活动的代码即可~,因为封装的太好,我们只需要几行代码就可以完成功能。还需要注意的是,谷歌工程师给封装业务逻辑是在子线程执行的,因此我们要更新数据要在主线程执行。运行程序接口是一样的~
喜欢我的朋友可以关注我,本专栏不定期更新简单有趣的安卓小文~
对于OKHttp更高级的用法,以后会在Android Studio精彩案例专栏里面进行细致详细的分析
转载于:https://www.cnblogs.com/wanghang/p/6299475.html
Android简易实战教程--第四十七话《使用OKhttp回调方式获取网络信息》相关推荐
- Android简易实战教程--第四十四话《ScrollView和HorizontalScrollView简单使用》
一.ScrollView 由于手机屏幕的高度有限,当普通布局放不下现实和的内容时,ScrollView视图(滚动视图)就会派上用场,因为数据可以往下滚动显示. 二.HorizontalScrollVi ...
- Android简易实战教程--第五十四话《视差特效》
查看更多进阶知识,可以关注我的公众号,微信搜索:Android小菜 这个简易实战教程系列专栏发现已经大半年没更新了啊,赶紧添点东西. 本文实现一个视差特效效果,动态效果如下: 代码十分简单,自定义Vi ...
- Android简易实战教程--第二十四话《画画板》
今天完成一个画画板. 首先来个布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android ...
- Android简易实战教程--第九话《短信备份~二》
这一篇,承接地八话.使用高效的方式备份短信--xml序列化器. 存储短信,要以对象的方式存储.首先创建javabean: package com.itydl.createxml.domain;publ ...
- Android简易实战教程--第五话《开发一键锁屏应用》
转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/51860900 点击打开链接 Device Administration 对于这个应 ...
- Android简易实战教程--第三十二话《使用Lrucache和NetworkImageView加载图片》
转载本专栏每一篇博客请注明转载出处地址,尊重原创.此博客转载链接地址:小杨的博客 http://blog.csdn.net/qq_32059827/article/details/5279131 ...
- android真实项目教程(四)——MY APP MY STYLE_by_CJJ
大家下午好...如果在学校,到时间吃晚饭了....隔了好久才重新敲代码...又落后那么多了,要更加努力学习了....今天下午写了下app的第四部分... 这里给下之前三部分的地址,因为如果第一次看,, ...
- android 重复解绑服务,Android培训实战教程之多次解绑抛出异常原因
Android培训实战教程之多次解绑抛出异常原因 更新时间:2015年12月28日14时27分 来源:传智播客Android培训学院 浏览次数: 多次解绑服务(unBindService)抛出异常原因 ...
- 视频教程-SEM实战教程(四)-网络营销
SEM实战教程(四) 毕业于中国人民大学,从事网络营销推广多年,网络营销讲师,有丰富的SEM.微博微信营销培训经验,多年的网络营销实战派研究者,操作过医疗集团.出国留学.教育培训等推广项目,现专注SE ...
最新文章
- tensorflow tensor 张量 部分采样 切片和索引
- js判断是否在iframe和禁止网页在iframe中显示
- mysql 取消主从复制_MySQL:第一次看到有人把MySQL主从复制讲解的这么清楚
- 本月与上月对比数据叫什么_财务人事应会Excel数据对比Vlookup函数快速核定变动...
- 阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第1节 继承_7_继承中方法的覆盖重写_注意事项...
- linux截图快捷键
- 宜搭功能更新:子表全面升级,高级流程可以批量审批
- oracle虚拟用户是什么意思,lr脚本中oracle 2tier虚拟用户相关内容
- VS2008 开发设计MOSS工作流 URN 注意了
- QT5 获取窗口、系统屏幕大小尺寸信息,Qt 获取控件位置坐标,屏幕坐标,相对父窗体坐标
- 那一种笔记软件更好用_制作更好的面向用户软件的7种方法
- 滴滴定制网约车D1即将登陆长沙 市民12月中可叫到
- Codeforces Round #468 (Div. 2): D. Peculiar apple-tree(水题)
- 变量 重复声明_JS:定义变量的var、let有何操作?(360°无死角)
- Wwise + GME游戏语音方案:解锁更多语音玩法,让玩家“声临其境”
- html5动漫人物小部件制作,虚拟动漫人物制作器app
- (产品面试贴)乐动——阿里巴巴2015暑期实习平台型产品经理(技术领域)
- 触发器referencing old as old new as new
- 不安装office的情况下如何实现对excel的导入导出
- 傅里叶级数 三角形式 到 复数形式
热门文章
- Android插件化原理解析——Hook机制之Binder Hook
- Android实战技术:深入理解Android的RPC方式与AIDL
- The new NDK support in Android Studio 1.3
- tensorflow命令行安装失败_2019-1 强化学习入坑记之ancanda安装
- matlab 交叉验证 代码,交叉验证(Cross Validation)方法思想简介
- 原python基础概念整理_Python从头学之基础概念整理
- linux中查找某一个字符串,Linux系统下,在文件中查找某个字符串
- QML编程之旅 之可视元素
- 2022.2.21显示器连接器引脚信号定义1
- ansys fluent udf manual 下载_Fluent内置流固耦合01 使用流程