欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用URL访问网络资源

程序员文章站 2022-05-06 14:09:54
...

使用URL访问网络资源

URL(Uniform Resource Locator)对象代表统一资源定位器,它是Internet上用来描述信息资源的字符串,是指向互联网资源的指针,主要用在各种WWW客户程序和服务器程序上。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。 

URL的格式由下列三部分组成:
第一部分是协议(或称为服务方式);
第二部分是存有该资源的主机IP地址(有时也包括端口号);
第三部分是主机资源的具体地址,如目录和文件名等。
第一部分和第二部分之间用": //“符号隔开,第二部分和第三部分用”/"符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。比如:

  • file://ftp.zzzy.com/pub/files/foobar.txt 代表存放主机ftp.zzzy.com上的pub/files/目录下的一个文件,文件名是foobar.txt

  • file://ftp.zzzy.com/pub 代表主机ftp.zzzy.com上的目录/pub。

  • file://ftp.zzzy.com/ 代表主机ftp.zzzy.com上的根目录。

  • http://www.zzzy.com.cn/tech/welcome.htm 其计算机域名为www.zzzy.com.cn。超级文本文件是在目录/tech下的welcome.htm

  • http://www.zzzy.com/xueshu/index.htm 其计算机域名为www.zzzy.com。超级文本文件是在目录/xueshu下的index.htm

    URL类提供了多个构造器用于创建URL对象,一旦获得了URL对象之后,就可以它的方法来访问该URL对应的资源了。

  • String getFile() 获取当前URL的资源名

  • String getHost() 获取当前URL的主机名

  • String getPath() 获取当前URL的路径部分

  • int getPort() 获取当前URL的端口号

  • String getProtocol() 获取当前URL的协议名称

  • String getQuery() 获取当前URL的查询字符串部分

  • InputStream openStream() 打开当前URL的连接,并返回一个用于读取该URL资源的InputStream

示例:通过URL获取远程某网站上的一张图片并将其下载到本地Android设备中

第一步:在布局文件中提供一个id为show的ImageView。
第二步:编写Activity类代码如下:

public class WebActivity extends Activity {
	private ImageView show;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		show = (ImageView) findViewById(R.id.show);
		try {
			URL url = new URL("http://www.zzzy.org/templets/default/images/logo.gif");// 定义一个URL对象	
			InputStream is = url.openStream();// 打开该URL对应的资源的输入流
			Bitmap bitmap = BitmapFactory.decodeStream(is);// 从InputStream中解析出图片
			show.setImageBitmap(bitmap);// 使用ImageView显示该图片
			is.close();
			is = url.openStream();// 再次打开URL对应的资源的输入流
			// 打开手机文件对应的输出流
			OutputStream os = openFileOutput("logo.gif", MODE_WORLD_READABLE);
			byte[] buff = new byte[1024];
			int hasRead = 0;
			while ((hasRead = is.read(buff)) > 0) {// 将URL对应的资源下载到本地
				os.write(buff, 0, hasRead);
			}
			is.close();
			os.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

第三步:因为程序需要访问互联网,所以我们还需要在功能清单文件中为其添加如下权限代码:

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

运行程序,文件下载下来且在界面中显示,在File Explorer视图下依次打开/data/data/com.hc.activity/files目录,我们会看到刚才从网络上下载下来的图片,如下图示:
使用URL访问网络资源
File Explorer视图显示效果