1.先在AndroidManifest.xml中注册加入访问因特网服务的权限:

<uses-permission android:name="android.permission.INTERNET" /> 

(若不加入,则会出现permission denied异常)

2.代码如下:

package vip.test.HttpGet;
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import org.apache.http.util.ByteArrayBuffer;
import org.apache.http.util.EncodingUtils;
import vip.test.HttpGet.R;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HttpGet extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tv = new TextView(this);
String myString = null;
try {
// 定义获取文件内容的URL
URL myURL = new URL(
"HTTP://www.baidu.com/hello.txt&quot");
// 打开URL链接
URLConnection ucon = myURL.openConnection();
// 使用InputStream,从URLConnection读取数据
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
// 用ByteArrayBuffer缓存
ByteArrayBuffer baf = new ByteArrayBuffer();
int current = ;
while ((current = bis.read()) != -) {
baf.append((byte) current);
}
// 将缓存的内容转化为String,用UTF-8编码
myString = EncodingUtils.getString(baf.toByteArray(), "UTF-8");
} catch (Exception e) {
myString = e.getMessage();
}
// 设置屏幕显示
tv.setText(myString);
this.setContentView(tv);
}
}

3.代码解释:

1)实例URL类:myURL,表示要获取内容的网址:

URL myURL=new URL(HTTP://www.baidu.com/hello.txt); 

2)实例URLConnection类,表示一个打开的网络连接ucon:

URLConnection ucon=myURL.openConnection(); 

3)用字节流的形式表示从网络上读到的数据:

InputStream is=ucon.getInputStream();
为避免频繁读取字节流,提高读取效率,用BufferedInputStream缓存读到的字节流
InputStream is=ucon.getInputStream();
BufferedInputStream bis=new BufferedInputStream(is);

4)用read方法读入网络数据:

ByteArrayBuffer baf=new ByteArrayBuffer();
int current=;
while((current=bis.read())!=-)
{
baf.append((byte)current);
}

5)由于读到的数据只是字节流,无法直接显示到屏幕上,所以得在显示之前将字节流转换为可读取的字符串:

myString=EncodingUtils.getString(baf.toByteArray(),&quot;UTF-&quot;); 

(如果读取的是.txt等文件是UTF-8格式的,就需要对数据进行专门的转换)

Android 通过URL获取网络资源的更多相关文章

  1. Android开发16——获取网络资源之基础应用

    一.项目背景在Android开发中有一项非常广泛的应用:Android项目获取另一个web项目的资源或者返回的数据.本博文介绍了获取另一个web项目的资源.有一个web项目,在其WebRoot文件夹下 ...

  2. Android 使用URL访问网络资源

    1.介绍 2.使用方法 3.java后台代码 package com.lucky.test51url; import android.annotation.SuppressLint; import a ...

  3. 【Android Demo】获取指定网页的页面源代码

    1.直接上效果图 2.代码 主要就是工具类HtmlService.java: import java.io.ByteArrayOutputStream; import java.io.InputStr ...

  4. 自己写http获取网络资源和解析json数据

    虽然github上有很多开源的,方便的jar报,用起来也很方便,但我们也需要了解其中的原理,如何自己不用第三方jar包来获取网络资源 主要代码如下:  因为联网是耗时的操作,所以需要另开一个线程来执行 ...

  5. Android 通过网络获取图片的源码

    将开发过程中经常用到的内容做个备份,如下的资料是关于Android 通过网络获取图片的的内容. package com.netimg; import android.app.Activity;impo ...

  6. 旧瓶新酒-获取网络资源即爬取下载页面内容(图片、html、css、js等)

    这个java获取网络资源以前也写过不少 最近用到又重新写了一个,apache.commons.io中的例子就非常好,但是无法对请求进行详细设置 于是大部分照搬,局部替换以设置请求头 如需更加复杂的设置 ...

  7. 解析URL 获取某一个参数值

    /** * 解析URL 获取某一个参数值 * * @param name 需要获取的字段 * @param webaddress URL * * @return 返回的参数对应的 value */ - ...

  8. iOS根据Url 获取图片尺寸

    iOS根据Url 获取图片尺寸 // 根据图片url获取图片尺寸 +(CGSize)getImageSizeWithURL:(id)imageURL { NSURL* URL = nil; if([i ...

  9. iOS/Android/Web Url Encode空格處理 原文連結:http://read01.com/3gDO.html

    iOS/Android/Web Url Encode空格處理 原文連結:http://read01.com/3gDO.html 前言 這裡只是講一個故事,一個發生在我身上的真實的故事.曾經,我以為搞加 ...

随机推荐

  1. 【xsy3423】党² 线段树+李超线段树or动态半平面交

    本来并不打算出原创题的,此题集CF542A和sk的灵感而成,算个半原创吧. 题目大意: 给定有$n$个元素的集合$P$,其中第$i$个元素中包含$L_i,R_i,V_i$三个值. 给定另一个有$n$个 ...

  2. 剑指offer五十一之构建乘积数组

    一.题目 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1].不 ...

  3. 简单shell expect程序

    1 expect程序 用的Ubuntu,本身没带expect,安装. sudo apt-get install expect (关于expect,参见http://www.tclchina.com/a ...

  4. TCP与UDP的差别以及TCP三次握手、四次挥手

    UDP: 1.UDP面向报文,无需建立连接,不可靠,数量小,高层就解决差错重传,无需拥塞控制 2.支持音频.视频传输 3.检查和检验UDP包头和数据和伪首部 4.分组开销小(头部8个字节),提供最大努 ...

  5. 第7章—SpringMVC高级技术—处理multipart形式的数据

    处理multipart形式的数据 MultipartResolver 用于处理文件上传,当收到请求时 DispatcherServlet 的 checkMultipart() 方法会调用 Multip ...

  6. spring自定义注解拦截器的配置

    1.创建注解文件 (文件格式为注解) 这里面什么都不需要写 文件名就是注解名称 如下 是@anno package com.ABC123.anno; import java.lang.annotati ...

  7. Java_反射机制详解

    本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的,要不然只看理论的话,看了也不懂,不过建议大家在看完文章之后,在回过头去看看理论,会有更好的理解. 下面开始正文. [案例1]通过一个对象 ...

  8. 分区助手里如何从临近盘(如D盘)抽取一定的空间给已经快满了的盘(如E盘)(博主推荐)(图文详解)

    不多说,直接上干货! 分区助手是什么?(博主推荐)(图文详解) 分区助手各版本比较(图文详解) 分区助手官网使用教程(专业版.绿色版和WinPE版)(图文详解) 安装分区助手时出现“分区助手已安装到你 ...

  9. 机器学习--集成学习(Ensemble Learning)

    一.集成学习法 在机器学习的有监督学习算法中,我们的目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不这么理想,有时我们只能得到多个有偏好的模型(弱监督模型,在某些方面表现的比较好) ...

  10. filebeat+ELK日志系统

    架构图 filebat logstash elasticsearch 基于elasticsearch6.3.2 elasticsearch(一) 之 elasticsearch初识 elasticse ...