【 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比特 ...
随机推荐
- 使用Socket沟通
当两台电脑TCP/IP协议进行通讯.平时Socket对象来表示该通信接口的两端,并通过Socket生产I/O流进行网络通信. 其中ServerSocket对象可以接收从连接的其他通信实体的请求.这个目 ...
- atitit.标准时间格式 相互转换 秒数 最佳实践
atitit.标准时间格式 相互转换 秒数 最佳实践 例如00:01:19 转换为秒数 79,,and互相转换 一个思路是使用div 60 mod...只是麻烦的... 更好的方法是使用stamp ...
- Cocos性能优化工具的开发介绍Visual Studio内存泄漏检测工具——Visual Leak Detector
然后,Windows下有什么好的内存泄漏检測工具呢?微软提供Visual Studio开发工具本身没有什么太好的内存泄漏检測功能.我们能够使用第三方工具Visual Leak Detector(下面简 ...
- java输入输出高速
头文件: import java.io.*; 定义: BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); ...
- Linux安装jdk 8和环境变量配置
1.下载jdk 地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.将刚刚 ...
- VS2010程序打包操作
摘录:http://www.cnblogs.com/daban/archive/2012/06/27/2565449.html 1. 在vs2010 选择“新建项目”----“其他项目类型”-- ...
- Windows Phone 8 - 建立App专属联络人资讯(ContactStore)
原文:Windows Phone 8 - 建立App专属联络人资讯(ContactStore) 在WP7的时候介绍了如何操作联络人的功能,例如:<Windows Phone 7 - 存取联络人与 ...
- mapreduce程序来实现分类
文件的内容例如以下所看到的: 5 45 8 876 6 45 要求最后的输出格式: 1 5 2 6 3 8 4 45 5 45 5 876 首先,这个题目是须要对文 ...
- JS学习笔记-OO疑问之封装
封装是面向对象的基础,今天所要学习的匿名函数与闭包就是为了实现JS的面向对象封装.封装实现.封装变量,提高数据.系统安全性,封装正是面向对象的基础. 一.匿名函数 即没有名字的函数,其创建方式为 fu ...
- c语言 int (*p)[5] 类型分析
#include<stdio.h> int main() { int i; int b[5]={1,3,5,7,9}; int (*a)[5] = &b ...