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 ...
随机推荐
- ubuntu 安装 TensorFlow、opencv3 的 tips
安装tensorflow: 创建tensorflow虚拟环境 conda create -n tensorflow python=2.7 输入命令查看可用版本的tensorflow-gpu cond ...
- 分位数回归及其Python源码
分位数回归及其Python源码 天朗气清,惠风和畅.赋闲在家,正宜读书.前人文章,不得其解.代码开源,无人注释.你们不来,我行我上.废话少说,直入主题.o( ̄︶ ̄)o 我们要探测自变量 与因变量 的关 ...
- WebSocket的使用(基于VUE与SpringBoot)
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议.WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据.在 We ...
- npm学习(二)之如何防止权限错误
如何防止权限错误 如果您在尝试全局安装包时看到EACCES错误,请阅读本章.如果更改安装npm的目录,通常可以避免此错误.要做到这一点,要么使用版本管理器重新安装npm(推荐)或手动更改npm的默认目 ...
- mybatis映射文件mapper详解
mapper.xml映射文件主要是用来编写sql语句的,以及一些结果集的映射关系的编写,还有就是缓存的一些配置等等. 1.<select>元素 <select>元素就是sql查 ...
- Linux学习--第十天--bash脚本、用户自定义变量、环境变量、位置参数变量、预定义变量、标准输入输出、wc、history、dd、PS1
shell简介 分为两种c shell 和b shell b shell:sh.ksh.Bash.psh.zsh: (Bash和sh兼容,linux基本shell是Bash) c shell:csh. ...
- C语言之带有数量可变的宏参数#define
1.定义格式如下 #define PR(...) printf(__VA_ARGS__) ...表示可变参数,__VA_ARGS__的作用是替换省略号的内容. 2.示例 #define ERROR( ...
- C++ STL(一)string的用法
# 1.string的用法- string在<iostream>的头中就有,但是还是得用<string>的头 ##### 构造函数- str(const char* ch) 直 ...
- 关于Python你不得不知道的Python语言特点
首先什么是语言?什么是编程? 准确来说是:定义计算机程序的语言,用来向计算机发送指令 个人理解: 语言:是一种交流的工具或者方式.比如我们的汉语普通话.各地的方言.外语中的英语.俄语.日语等.我们 ...
- MyBatis:Parameter Maps collection does not contain value for 的问题解决
Result Maps collection does not contain value for frontpreviewprofitManage.cdata 出现上述错误 主要是因为你的sel ...