一间连接应用网络的主要功能。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。
版权声明:本文博主原创文章。博客,未经同意不得转载。