URL对象代表统一的资源定位器,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更复杂的对象的引用,例如对数据库或搜索引擎的查询。就通常情况而言,URL可以由协议名、主机、端口和资源组成,即满足如下格式:
protocol://host:port/resourceName
例如如下的URL地址:
http://www.baidu.com/
注意:
JDK中还提供了一个URI类,其实例代表一个统一资源标志符,java的URI不能用于定位任何资源,它的唯一作用就是解析。与此对应的,URL则包含一个可打开到达该资源的输入流,因此我们可以将URL理解成URI的特例。
URL类提供了多个构造器用于创建URL对象,一旦获得了URL对象之后,就可以调用如下方法来访问该URL对应的资源了。
★String getFile():获取此URL的资源名。
★String getHost():获取此URL的主机名。
★String getPath():获取此URL的路径部分。
★Int getPort():获取此URL的端口号。
★String getProtocol():获取此URL的协议名称。
★String getQuery():获取此URL的查询字符串部分。
★URLConnection openConnection():返回一个URLConnection对象,它表示到URL所引用的远程对象的连接。
★InputStream openStream():打开与此URL的连接,并返回一个用于读取该URL资源的InputStream。
一、使用URL读取网络资源
URL对象中前面几个方法都非常容易理解,而该对象提供的openStream()可以读取该URL资源的InputStream,通过该方法可以非常方便的读取远程资源。
下面的程序示范了如何通过URL类读取远程资源。
public class MainActivity extends Activity
{
ImageView show;
// 代表从网络下载得到的图片
Bitmap bitmap;
Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
if(msg.what == 0x123)
{
// 使用ImageView显示该图片
show.setImageBitmap(bitmap);
}
}
};
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
show = (ImageView) findViewById(R.id.show);
new Thread()
{
public void run()
{
try
{
// 定义一个URL对象
URL url = new URL("http://www.crazyit.org/"
+ "attachments/month_1008/20100812_7763e970f"
+ "822325bfb019ELQVym8tW3A.png");
// 打开该URL对应的资源的输入流
InputStream is &#