Android学习笔记:网络编程-基础篇
来源:互联网 发布:观一叶而知秋全文 编辑:程序博客网 时间:2024/05/28 11:28
一、内容摘要
介绍了在Android中编写网络应用的基本方法。
二、目录
1、添加权限
2、选择HTTP Client
3、检查网络连接
4、在子线程中进行网络操作
5、连接并下载数据
6、把InputStream转换为String
三、主要内容
1、添加权限
mainifest中需要添加以下两个权限:
(1)允许程序打开网络套接字
<uses-permissionandroid:name="android.permission.INTERNET"/>
(2)允许程序获取网络信息
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
2、选择HTTP Clients
许多Android网络应用都通过HTTP传输数据,Android包括两种HTTPclients:HttpURLConnection和HttpClient,若使用Android2.3或以上版本的API,建议选择前者.
选择依据:HttpClient的子类拥有大量API,由于过于臃肿带来的兼容性问题,Android开发团队对它的维护并不活跃。相比之下,HttpURLConnection拥有轻量级API,在减少网络流量、速度以及省电方面都有较大改善,并且Android开发团队正致力于它的不断完善中。
3、检查网络连接
在连接到网络之前,应该通过getActiveNetworkInfo()和isConnected()检查网络的可用性。
示例代码:
public void myClickHandler(View view) { ... ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isConnected()) { // 网络操作 } else { // 提示错误 } ...}
4、在子线程中进行网络操作
网络操作会有延迟,不应该在主线程(UI线程)中操作。推荐使用AsyncTask类,该类可以很方便实现在子线程中进行网络操作,并且把结果返回到主线程,免除了操作thread和handle的麻烦。
5、连接并且下载数据
通过HttpURLConnection可以发送“GET”请求,在调用connect()之后,可以调用getInputStream()获取InputStream
示例:(downloadUrl方法在子线程中执行)
private String downloadUrl(String myurl) throws IOException { InputStream is = null; //展示网页内容的前500个字符 int len = 500; try { URL url = new URL(myurl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(10000 /* 毫秒*/); conn.setConnectTimeout(15000 /*毫秒*/); conn.setRequestMethod("GET"); conn.setDoInput(true); // 开始查询请求 conn.connect(); int response = conn.getResponseCode(); Log.d(DEBUG_TAG, "The response is: " + response); is = conn.getInputStream(); // 把InputStream转换为string String contentAsString = readIt(is, len); return contentAsString; // 确保程序结束后关闭InputStream } finally { if (is != null) { is.close(); } }}
6、把InputStream转换成String
得到InputStream后,应该把它解码为目标数据类型,如Bitmap:
示例:
InputStream is = null;...Bitmap bitmap = BitmapFactory.decodeStream(is);ImageView imageView = (ImageView) findViewById(R.id.image_view);imageView.setImageBitmap(bitmap);
补充上面示例中readIt方法的实现:
public String readIt(InputStream stream, int len) throws IOException, UnsupportedEncodingException { Reader reader = null; reader = new InputStreamReader(stream, "UTF-8"); char[] buffer = new char[len]; reader.read(buffer); return new String(buffer);}
- Android学习笔记:网络编程-基础篇
- Android学习笔记-网络编程
- Android学习笔记-网络编程
- Java学习笔记(七、网络编程基础)
- 【学习笔记】网络编程基础API
- unity3d基础学习笔记13:网络编程
- Android基础笔记(五)-网络编程
- Android基础笔记(六)-网络编程
- python 网络编程基础学习笔记(1)-网络客户端-socket
- Android基础:网络(2)---学习笔记
- Android学习笔记 day04 _ 网络编程
- android网络编程学习笔记(一)
- Android学习笔记网络编程(1、基本概念)
- Android学习笔记——网络编程
- Android-网络编程基础
- Android 网络编程基础
- android 网络编程基础
- 网络基础学习笔记
- ORACLE ROLLUP和CUBE的使用
- 需要谈谈的游戏测试第二季(二)
- linux学习笔记-fedora 16 U盘安装
- Dll 编程入门指南
- 【并查集】识别水果
- Android学习笔记:网络编程-基础篇
- Flex+spring+hibernate 数据交互
- V9下顺序容器Vector的size与capacity成员
- 5-16
- eclipse+ADT 进行android应用签名详解
- 黑马程序员——static关键字 与简单的单态设计模式
- C++经验之谈
- Java 性能优化之 String 篇
- 数字证书原理