Android 之 使用URL访问网络资源

[size=small][color=olive][b]通过URL访问网络资源:
* URL对象代表统一资源定位器,它是指向互联网“资源”的指针,资源可以是简单的文件目录
也可以是更复杂的对象的引用,URL可以由协议名、主机、端口、和资源组成;

* 格式:protocal://host:port/resourceName;
例如:http://hao123.com/tiyan.html

* URL 类对象包含的一些方法:用于访问URL对应的资源:
url.getFile(); 获取此url的资源名;
url.getHost(); 获取此url的主机名;
url.getPath(); 获取此url的路径部分;
url.getPort(); 获取端口;
url.getProtocol();
openConnection(); 返回一个URLConnection对象,表示到URL所引用的远程对象连接;
openStream(); 打开此url连接,并返回一个用于读取该url资源的InputStream;

* 例如:访问网络资源上的一张图片;http://192.168.0.11:8080/s.jpg
java代码:[/b][/color][/size]
/* 测试:使用URL访问网络资源 */
OnClickListener listener = new OnClickListener() {

public void onClick(View v) {
try{
//http://192.168.0.11:8080/s.jpg 图片的网络地址
String url_path = "http://192.168.0.11:8080/s.jpg";
URL url = new URL(url_path);

/* 打开URL对应的资源的输入流 */
InputStream is = url.openStream();

/* 从InputStream中解析出图片 */
Bitmap bitmap = BitmapFactory.decodeStream(is);

/* 使用ImageView显示该图片 */
imageView.setImageBitmap(bitmap);

/* 关闭流 */
is.close();

/****************************************************/

/* 实现资源文件的保存 *//* 再次打开输入流 */
is = url.openStream();

/* 打开手机文件对应的输出流 *//* 参数:保存的文件名; 模式 */
OutputStream os = openFileOutput("pic.jpg", MODE_WORLD_WRITEABLE);

/* 字节数组 */
byte[] buffer = new byte[1024];
int hasRead = 0;
while((hasRead=is.read(buffer))>0){
os.write(buffer, 0, hasRead);
}
is.close();
os.close();
}catch(Exception ex){

}
}
};

[size=small][color=olive][b]* 使用URLConnection 提交请求:
简介:URLConnection 是个抽象类,它由一个直接的子类HttpURLConnection;
方法的介绍:URL 的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和URL之间
的通信连接,程序可以通过URLConnection实例向URL发送请求,读取URL引用的资源;
使用步骤:

* 使用HttpURLConnection 访问网络:
简介:HttpURLConnection 继承了URLConnection,因此可用于向指定的网站发送get post请求;
在URLConnection的基础上提供了如下便捷的方法;
getResponsedCode(); 获取服务器上的响应代码;
getResponseMessage(); 获取服务器相应消息;
getResponseMethod(); 获取发送请求的方法;
setResponseMethod(String method); 设置发送请求的方法;

温馨提示:get与post的介绍:
* Http 通信中使用最多的是get 和post , GET 请求可以获取静态页面,可以把参数放在url
字符串后面传递给服务器;
* 不同点:post的参数不是放在url字符串里,而是放在http请求数据中;

案例:使用HttpURLConnection 访问网络图片:[/b][/color][/size]
java代码:
/* 测试:通过HttpURLConnection 访问网络图片 */
OnClickListener listerner_httpURLConnection = new OnClickListener() {

public void onClick(View v) {
try{
String path = ""; //URL 地址
URL url = new URL(path);

/* 打开连接, 获取HttpURLConnection 的对象 */
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

/* 设置请求方式 */
conn.setRequestMethod("get");

/* 设置请求超时的时间 */
conn.setReadTimeout(5000);

/* 打开流,获取通道 *//* 可读流,从网络上将资源读取到内存中 */
InputStream is = conn.getInputStream();

/* 创建一个字节数据输出流;可写流 */
ByteArrayOutputStream baos = new ByteArrayOutputStream();

/* 创建一个字节数组 */
byte[] buffer = new byte[1024];
int len=0;

/* 每次读取数据1024个字节,直到没有数据可读时==-1 */
while((len=is.read(buffer))!=-1 ){
/* 将每次读取到的输入按指定大小写入输出流中 */
baos.write(buffer,0,len);
}
byte[] data = baos.toByteArray();
Bitmap bitmap = BitmapFactory.decodeByteArray(buffer, 0, data.length);
imageView.setImageBitmap(bitmap);



}catch(Exception ex){
Toast.makeText(MainActivity.this, "图片下载失败", 1000).show();
}

}
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值