【 Android官方文件读书笔记】连接网络
一间连接应用网络的主要功能。Android系统对网络连接进行了封装,使得开发人员可以更快的给应用添加网络功能。大多数网络连接的Android应用使用HTTP发送和接受数据。Android包含两个HTTPclient:HttpURLConnection和Apache HttpClient。
开发人员可以使用这两个client中的随意一个去完毕网络连接。
1, 网络连接的基本步骤:
(1)添加权限:manifest文件里必须包括下面权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
(2)检查网络状态。利用ConnectivityManager 的getActiveNetworkInfo()和isConnected()方法运行检查。例如以下:
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
// 获取数据
} else {
// 显示错误
}
(3)在独立线程中运行网络连接:网络操作涉及不可预知的延迟,为了防止不良的用户体验,通常的做法是从UI中独立出线程去运行网络连接操作。
(4)连接并下载数据,以HttpURLConnection
URL url = new URL(myurl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.connect();
int response = conn.getResponseCode();
is = conn.getInputStream();
(5)流对象转换为字符串对象
Reader reader = null;
reader = new InputStreamReader(stream, "UTF-8");
char[] buffer = new char[len];
reader.read(buffer);
2。HttpClient与HttpURLConnection的对照。
HttpClient与HttpURLConnection都支持HTTPS,流上传和下载, 可配置的超时。IPv6以及连接池。因此两个都能够完毕主要的网络操作。
HttpClient是Apache开源组织提供的一个开源的项目,Android把它集成了进去。
拥有众多的Api,实现比較稳定。bug少。但同一时候也因为HttpClient的API数量过多,使得开发人员非常难在不破坏兼容性的情况下对它进行升级和扩展,所以眼下Android团队在提升和优化HttpClient方面的工作态度并不积极。
HttpURLConnection是一种多用途、轻量级的HTTPclient。他的Api比較简单。开发人员比較easy使用以及对它进行扩展。但缺点是Android2.3之前的版本号存在一些Bug。如:对一个可读的InputStream调用close()方法时,就有可能会导致连接池失效等。Android2.3系统对这些问题进行了修复。并添加了一些HTTPS方面的改进。在Android
4.0版本号中。又加入了一些响应的缓存机制,并且Google团队会持续去对HttpURLConnection进行优化。
一般建议2.3之前的系统使用HttpClient,而2.3及其之后的版本号使用HttpURLConnection。
版权声明:本文博主原创文章。博客,未经同意不得转载。
【 Android官方文件读书笔记】连接网络的更多相关文章
- ipconfig/release时:系统找不到指定的文件。无法连接网络
问题描述: ipconfig/release时:系统找不到指定的文件,无法连接网络,无法获取正确ip地址 处理方法: 修复Winsock和重置IP设置.第一步:开始-运行,输入cmd,打开命令行窗口. ...
- 《android开发进阶从小工到专家》读书笔记--HTTP网络请求
No1: 客户端与服务器的交互流程: 1)客户端执行网络请求,从URL中解析出服务器的主机名 2)将服务器的主机名转换成服务器的IP地址 3)将端口号从URL中解析出来 4)建立一条从客户端与Web服 ...
- 读书笔记_python网络编程3_(2)
2.UDP 2.0.数据包表示较短的信息,大小通常不会超过几千字节,在浏览器与服务器进行会话/电子邮件客户端与ISP的邮件服务器进行会话时,这些独立而小型的数据包是如何组成会话的呢? 2.0.1.IP ...
- 第二章 搭建Android开发环境--读书笔记
俗话说,工欲善其事,必先利其器,对于Android驱动开发来说,首先我们要做的就是搭建Android开发环境,我们首先要配置Linux驱动的开发环境,接着还得配置开发Android应用程序以及Andr ...
- Android驱动开发读书笔记五
第五章 本章介绍了S3C6410开发板的功能,开发板的不同主要是在烧录嵌入式系统的方式不同,以及如何在此开发板上安装Android. 1.安装串口调试工具minicom 首先需要一根USB转串口线,由 ...
- 读书笔记_python网络编程3_(1)
0.前言 代码目录: https://github.com/brandon-rhodes/fopnp/tree/m/py3 0.1.网络实验环境:理解客户端与服务器是如何通过网络进行通信的 每台机器通 ...
- Android进阶加密-第1章-Android系统架构-读书笔记
第 1 章 Android 系统架构 1.1 Android 系统架构 Android 系统架构分为五层,从上到下依次是应用层.应用框架层.系统运行库层.硬件抽象层和 Linux 内核层. 应用层(S ...
- 读书笔记_python网络编程3(6)
6.TLS/SSL 6.0. 传输层安全协议(TLS, Transport Layer Security)是如今web上应用最广泛的加密方法了,1999年成为互联网标准.前身是安全套接层(SSL, S ...
- 读书笔记_python网络编程3(5)
5. 网络数据与网络错误 应该如何准备需要传输的数据? 应该如何对数据进行编码与格式化? Py程序需要提供哪些类型的错误? 5.1. 字节与字符串 PC与网卡都支持将字节作为通用传输单元.字节将8比特 ...
随机推荐
- IT增值服务,客户案例(一)--山东青岛在职人士,2年.Net经验,转Java开发半年
客户总体情况:2年.Net开发经验,2014年刚刚转Java半年.对Java的若干问题不是非常清楚,仅仅是对JSP/Servlet/JavaBean Spring.SpringMVC.Mybatis有 ...
- EXE文件结构和读取方法
一.EXE文件概念 EXE File英文全名executable file .译作可运行文件,可移植可运行 (PE) 文件格式的文件,它能够载入到内存中.并由操作系统载入程序运行,是可在操作系统存储空 ...
- C# 视频教程
http://www.cnblogs.com/kellen/tag/Silverlight/ http://www.lanmaodream.com/archives/244.html
- 制作service服务,shell脚本小例子(来自网络)
事先准备工作:源码安装apache .安装目录为/usr/local/httpd 任务需求:1.可通过 service httpd start|stop|status|restart 命令对服务进行控 ...
- Linux 下一个 Mysql error 2002 错误解决
Linux 下一个 Mysql error 2002 错误解决 首先查看 /etc/rc.d/init.d/mysqld status 查看mysql它已开始. 假设启动的的话,先将数 ...
- 对于Netty的十一个疑问(转)
[说明]本文原载于码农 IO(manong.io)官方微信 developerWorks,转载.引用请注明出处及作者. 1.Netty 是什么? Netty 是一个基于 JAVA NIO 类库的异步通 ...
- 谷歌上不去,长期的解决方案。在稳定高速Google和Gmail
对稳定Google神器 国内Google很不稳定,缓慢并经常上不去,由"我想去Google",安全和稳定的使用Google.Gmail.Google+所以通常需要特殊的手段岗位胜任 ...
- aauto攫http数据
说明:灵巧使用上述数据的抓取网页简单的例子. 样例:想把某站点的数据抓回来.然后保存在数据库里边. 步骤:1.打开sql.new一个数据库Test.新建一个表test. 2.打开快手.准备抓数据,以这 ...
- NetBeans工具学习之道:NetBeans IDE Java 高速新手教程
欢迎使用 NetBeans IDE! 本教程通过指导您创建一个简单的 "Hello World" Java 控制台应用程序,简要介绍 NetBeans IDE 工作流.学习完本教程 ...
- 使用JavaScript检测浏览器
假设你真的需要检测浏览器的类型,使用JavaScript非常easy达到. View Demo Download Source from GitHub JavaScript有一个navigator的标 ...