android和网络连接相关的类URL,URLConnection,HttpURLConnection,HttpClient
这几个类都是用于和服务器端的连接,有些功能都能够实现,关系是:
一、URL
URL标识着网络上的一个资源:该类包含一些URL自身的方法,如获取URL对应的主机名称,端口号,协议,查询字符串外,还有些方法:
Returns a new connection to the resource referred to by this URL.
| final InputStream | openStream()
Equivalent to
openConnection().getInputStream(types). |
| final Object | getContent(Class[] types)
Equivalent to
openConnection().getContent(types). |
二、URLConnection
该类可以设置相关的请求头参数,发送get或者post请求。
三、HttpURLConnection
URLConnection for http;提供了发送http请求及处理相应的更方便的方法。
四、httpClient
可以认为httpClient就死一个增强版的httpURLCnnection,后者可以做的事前者都可以做,不顾更关注与如何发送请求,接收响应,以及管理连接。
/**
* 该方法能够将url指定的资源转换为byte数组
*
* @param path url对应的地址
* @return 返回字节数组
* @throws Exception
*/
public byte[] getUrlData(String path) throws Exception {
URL url = new URL(path);
// inputstream只能进行读取数据到内存(具体说就是内存中的变量),用于客户端接收服务器端的相应
url.openConnection().setConnectTimeout(3000);
InputStream is = url.openConnection().getInputStream();
byte[] buffer = new byte[1024];
//需要获得数组的时候,这个io流经常使用
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
int len;
while ((len = is.read(buffer)) > 0) {
// 输出流是将内存中的数据(其实就是变量的数据)进行输出,可以输出到文件,转换为字节数组等
bos.write(buffer);
}
return bos.toByteArray();
} catch (Exception e) {
return null;
} finally {
bos.close();
is.close();
} }
例如通过上述方法下载的图片对应的数组,如果希望显示在imageView控件上,借助于bitmap
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
img.setImageBitmap(bitmap);
//也可以直接从流中常见bitmap
//BitmapFactory.decodeStream(is);
至于保存下载到的图片,借助于文件io,或者bitmap.compress即可。
android和网络连接相关的类URL,URLConnection,HttpURLConnection,HttpClient的更多相关文章
- Android OkHttp网络连接封装工具类
package com.lidong.demo.utils; import android.os.Handler; import android.os.Looper; import com.googl ...
- android 判断网络连接的工具类
package com.way.util; import android.content.Context; import android.net.ConnectivityManager; import ...
- Android检测网络连接
Android检测网络连接 import android.app.AlertDialog; import android.content.Context; import android.content ...
- android当前网络连接类型判断
package net.nyist.netState; import android.content.Context; import android.net.ConnectivityManager; ...
- android 检查网络连接状态实现步骤
获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android.permission.AC ...
- Android 检测网络连接状态
Android连接网络的时候,并不是每次都能连接到网络,因此在程序启动中需要对网络的状态进行判断,如果没有网络则提醒用户进行设置. 首先,要判断网络状态,需要有相应的权限,下面为权限代码(Androi ...
- 深入学习Android有关网络连接的内容
基于实际项目中碰到的些许问题,开始重新深入学习Android网络连接有关知识. Android的4.1.2版本的AndroidHttpClient模块setSoTimeout之后实际超时时间和设置的时 ...
- android检测网络连接状态示例讲解
网络的时候,并不是每次都能连接到网络,因此在程序启动中需要对网络的状态进行判断,如果没有网络则提醒用户进行设置 Android连接首先,要判断网络状态,需要有相应的权限,下面为权限代码(Andro ...
- [android] android 获取网络连接信息
效果图: 工具类 /** * 获取网络连接信息 * * 根据NetworkInfo可以知道有很多的连接方式和信息 * * ① 当没有任何可用网络的时候,networkinfo为null 判断netw ...
随机推荐
- 关于 Spring AOP (AspectJ) 你该知晓的一切 (转)
出处:关于 Spring AOP (AspectJ) 你该知晓的一切
- 字符集详解 ASCII码、Unicode、UTF-8 (转)
认识字符集 对于计算机而言,它仅认识两个0和1,不管是在内存中还是外部存储设备上,我们所看到的文字.图片.视频等等“数据”在计算机中都是已二进制形式存在的.不同字符对应二进制数的规则,就是字符的编码. ...
- vue 实践技巧合集
前言 本文纯属个人平时实践过程中的一些经验总结,算是一点点小技巧吧,不是多么高明的技术,如果对你有帮助,那么不胜荣幸. 本文不涉及罕见API使用方法等,大部分内容都是基于对vue的一些实践而已.由于涉 ...
- MyCAT与MySQL导入、导出文件
1. MySQL批量导入-LOAD DATA使用本地客户端连接MySQL数据库,批量导入数据,出现报错:2017-06-07 09:30:45,936 MySqlWrapper::ImportCSVt ...
- python2 'ascii'编码问题
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 223: ordinal not in range(128) ...
- Tomb Raider HihoCoder - 1829 (二进制枚举+暴力)(The 2018 ACM-ICPC Asia Beijing First Round Online Contest)
Lara Croft, the fiercely independent daughter of a missing adventurer, must push herself beyond her ...
- idea控制台搜索框
https://blog.csdn.net/honnyee/article/details/82772948
- java选做猜数字
程序设计思想 第一步:使用随机数生成1-100的数字 第二步:让用户输入数字 第三步:输入的数字与生成数字不同执行下一步,相同执行第五步 第四步:比较两数大小并输出结果,并返回第二步 第五步:输出猜对 ...
- JMeter 功能挖掘之 WEB 文件导出
前言 自从写从0构建自动化测试平台(一)之技术选型开始,在工作中Get新技能就非常想郑重的记录下来,方便自己查阅:相信很多人都有这种感触:平时问题解决后,没有及时记录,下次遇到类似问题,需要花同等的成 ...
- Java基础——面试、笔试
网址来源: http://www.nowcoder.com/discuss/5949?type=0&order=0&pos=4&page=2 参考资料:(java方面的一些面试 ...