`

取URL对应的资源

 
阅读更多

认识IP、认识URL是进行网络编程的第一步。java.net.URL提供了丰富的URL构建方式,并可以通过java.net.URL来获取资源。

  一、认识URL

  类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。

  简单的可以把URL理解为包含:协议、主机名、端口、路径、查询字符串和参数等对象。每一段可以独立设置。

  应用程序也可以指定一个“相对 URL”,它只包含到达相对于另一个 URL 的资源的足够信息。HTML 页面中经常使用相对 URL.

  相对 URL 不需要指定 URL 的所有组成部分。如果缺少协议、主机名称或端口号,这些值将从完整指定的 URL 中继承。

  由于 URL 不懂 URL 转义,所以它不会识别同一 URL 的对等编码和解码形式。

  注意,URI 类在某些特定情况下对其组成字段执行转义。建议使用 URI 管理 URL 的编码和解码,并使用 toURI() 和 URI.toURL() 实现这两个类之间的转换。

  也可以使用 URLEncoder 和 URLDecoder 类,但是只适用于 HTML 形式的编码,它与 RFC2396 中定义的编码机制不同。

  (以上介绍来自JavaAPI doc)

  二、URL对象的构建

  方式很多,可以看看API文档。

  三、获取URL指定的资源

  下面给个例子,说明如何获取到指定的资源。

 

import java.io.*; 
import java.net.URL; 
import java.net.URLConnection; 

public class TestURL { 
        public static void main(String[] args) throws IOException { 
                test4(); 
                test3(); 
                test2(); 
                test(); 
        } 

        /** 
         * 获取URL指定的资源。 
         * 
         * @throws IOException 
         */ 
        public static void test4() throws IOException { 
                URL url = new URL("http://lavasoft.blog.51cto.com/attachment/200811/200811271227767778082.jpg"); 
                //获得此 URL 的内容。 
                Object obj = url.getContent(); 
                System.out.println(obj.getClass().getName()); 
        } 

        /** 
         * 获取URL指定的资源 
         * 
         * @throws IOException 
         */ 
        public static void test3() throws IOException { 
                URL url = new URL("http://www.hrtsea.com/down/soft/45.htm"); 
                //返回一个 URLConnection 对象,它表示到 URL 所引用的远程对象的连接。 
                URLConnection uc = url.openConnection(); 
                //打开的连接读取的输入流。 
                InputStream in = uc.getInputStream(); 
                int c; 
                while ((c = in.read()) != -1) 
                        System.out.print(c); 
                in.close(); 
        } 

        /** 
         * 读取URL指定的网页内容 
         * 
         * @throws IOException 
         */ 
        public static void test2() throws IOException { 
                URL url = new URL("http://www.hrtsea.com/down/soft/45.htm"); 
                //打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。 
                Reader reader = new InputStreamReader(new BufferedInputStream(url.openStream())); 
                int c; 
                while ((c = reader.read()) != -1) { 
                        System.out.print((char) c); 
                } 
                reader.close(); 
        } 

        /** 
         * 获取URL的输入流,并输出 
         * 
         * @throws IOException 
         */ 
        public static void test() throws IOException { 
                URL url = new URL("http://lavasoft.blog.51cto.com/62575/120430"); 
                //打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。 
                InputStream in = url.openStream(); 
                int c; 
                while ((c = in.read()) != -1) 
                        System.out.print(c); 
                in.close(); 
        } 
} 


  四、Java所支持的URL类型

import java.net.URL; 

public class MainClass { 

        public static void main(String[] args) { 

                String host = "www.java2s.com"; 
                String file = "/index.html"; 

                String[] schemes = {"http", "https", "ftp", "mailto", "telnet", "file", "ldap", "gopher", 
                                "jdbc", "rmi", "jndi", "jar", "doc", "netdoc", "nfs", "verbatim", "finger", "daytime", 
                                "systemresource"}; 

                for (int i = 0; i < schemes.length; i++) { 
                        try { 
                                URL u = new URL(schemes[i], host, file); 
                                System.out.println(schemes[i] + " is supported\r\n"); 
                        } catch (Exception ex) { 
                                System.out.println(schemes[i] + " is not supported\r\n"); 
                        } 
                } 
        } 
} 


原文出自【比特网】,转载请保留原文链接:http://soft.chinabyte.com/database/40/11335040.shtml

 

分享到:
评论

相关推荐

    C++网络爬虫项目

    之后的抓取调度中重复第步,下载这个URL所对应的网页。 如此这般,形成WEBCRAWLER 网络爬虫实训项目 6 循环,直到“待抓取URL队列”空,这表示爬虫已将所有能够被抓取的网页尽 数抓完,完成一轮完整的抓取过程。 ...

    Sosoo 1.0网络爬虫程序.doc

    //实现对获取url对应的HttpDoc对象的监控 void webRobotUpdateQueueStatus(int length); //实现当前处理任务的监控 void webRobotDone(); //处理完成 void webRobotSleeping(boolean sleeping); //spider暂停 ...

    1345个易语言模块

    取句柄对应全路径文件名2.1.ec 取图片尺寸.ec 取声调拼音模块.ec 取声调拼音模 块1.0.ec 取姓名.ec 取快捷方式信息1.2.ec 取拼音带声调1.2.ec 取拼音首个字母.ec 取拼音首 模块.ec 取按键名称模块.ec 取控件或窗口的...

    SimpleSpider:一个简单的家庭作业蜘蛛

    本程序要求:从给定网址作为入口,爬取对应入口网页并分析其中的URL并爬取对应的网页,直到没有更多页面爬取时完成爬取时只爬取本地服务器的网页,不怕取外站资源采用多线程结构设计,输出每一个文件的文件大小使用...

    易语言模块914个

    取句柄对应全路径文件名2.1.ec 取图片尺寸.ec 取声调拼音模块1.0.ec 取姓名.ec 取拼音带声调1.2.ec 取拼音首个字母.ec 取拼音首模块.ec 取按键名称模块.ec 取控件或窗口的标题.ec 取操作系统类别.ec 取...

    jdbc基础和参考

    所以如果一旦连接关闭那么ResultSet将取不到值 5.处理结果 如果有结果集,处理结果集 ResultSet next(),每执行一次,向下移动一次,如果有值,返回true,如果没值返回false while(rs.next()){ rs.getType...

    易语言模块大全(共775个模块)

    取文件对应图标(1.0).zip 取文本文件行数(1.0).zip 取易模块信息(1.0).zip 取歌词模块(1.0).zip 取汉字代码(1.0).zip 取汉字全拼音模块(1.1).zip 取汉字笔画(1.0).zip 取汉字笔画模块(1.0).zip 取注册表键句柄(1.0)....

    易语言700模块打包

    取文件对应图标(1.0).zip 取文本文件行数(1.0).zip 取易模块信息(1.0).zip 取歌词模块(1.0).zip 取汉字代码(1.0).zip 取汉字全拼音模块(1.1).zip 取汉字笔画(1.0).zip 取汉字笔画模块(1.0).zip 取注册表键...

    HGE_系列教材(1-9)

    // 纹理的 x,y 坐标(赋值前需要规格化坐标间隔,使得 tx,ty 取 值范围在[0,1]) }; 规格化坐标间隔在后面的例子中会谈到 1. 颜色的表示: 颜色使用32 位表示,从左开始,8 位为Alpha 通道,8 位红色,8 位绿色,...

    1350多个精品易语言模块

    取句柄对应全路径文件名2.1.ec 取图片尺寸.ec 取声调拼音模块.ec 取声调拼音模 块1.0.ec 取姓名.ec 取快捷方式信息1.2.ec 取拼音带声调1.2.ec 取拼音首个字母.ec 取拼音首 模块.ec 取按键名称模块.ec 取控件或窗口的...

    网际畅游 MyIE 3.0 源代码

    过滤重复窗口:在编辑窗口过滤器中选择过滤重复窗口,MyIE会自动重用已打开的相同URL的窗口,避免资源浪费。 下载控制:你可以为每个页面设置是否需要在网页中载入图片,声音,Script文件, Java Applet, ActiveX...

    jsp内置对象的用法

    11 URL getResource(String path) 返回指定资源(文件及目录)的URL路径 12 InputStream getResourceAsStream(String path) 返回指定资源的输入流 13 RequestDispatcher getRequestDispatcher(String uripath) ...

    易语言程序免安装版下载

     静态编译后的易语言EXE/DLL之间不能再共享譬如窗口、窗口组件等类似资源,对于已经静态连接到一个EXE/DLL中的支持库,该支持库中的数据或资源将不能再被其它EXE/DLL中所使用的同名支持库访问。这是因为代码被分别...

    计算机网络技术20秋在线作业2-0003.docx

    A:对应于系统上的每一个网络接口都有一个IP地址 B:IP地址中有16位用于描述网络 C:IP地址通常直接用于用户之间的通信 D:D类地址用于多点广播 答案:A,D 关于T P/IP协议的描述中,下列哪个是正确的? () A:地址...

    网站架构的设计方案.doc

    只是一种技术手段 ,对应的,我们取钱后不吐交易凭条,而发送一条提醒短信也是可能的,但并 不是一定如此,如果在实际情况中,我们要求取款后必须吐出交易凭条,也就是说吐出 交易凭条已经和取款紧密结合,那么你也...

    flash shiti

    16.lash能将ASCII代码转换成对应的字符,也可以返回字符对应的ASCII码。Chr表示什么? A. 转换ASCII码为字符 B. 转换字符为ASCII码 C. 转换字符为海明码 D. 转换海明码为字符 17.Flash 菜单File→Print的快捷...

    测试培训教材

    9. 把QC中的需求字段和需求模版的列名所对应的字母标号进行关联映射。 从Excel导入 选Demo项目,提示错误: 改成用alice_qc用户登录即可! Author全改成Admin 从...

    jquery插件使用方法大全

    推荐 微软的visual studio 2008 sp1支持对jquery的动态提示,只要在代码页导入对应的vsdoc脚本就可以。 目前为止,jQuery的最新版本为1.7.2。 编辑本段历史版本  jQuery 1.0(2006年8月):该库的第一个稳定版本,...

    ios开发记录

    //CGAffineTransformMakeRotation 方法的作用就是传进去一个角度(计量单位不是度,是弧度),方法内部帮你生成一个这个角度所对应的旋转矩阵 //rotate 旋转 CGAffineTransform a = ...

Global site tag (gtag.js) - Google Analytics