`
sdustyongz
  • 浏览: 85666 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java获取URL对应的资源

阅读更多
(转自:http://www.cn-java.com/www1/?action-viewnews-itemid-11027)

认识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 中定义的编码机制不同。


    (以上介绍来自Java API 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");
                        }
                }
        }
}
    另外,还可以通过协议处理器自定义协议。
查看全部1条评论
分享到:
评论

相关推荐

    JavaNetDemo:在JAVA中,Java.net包里面的类是进行网络编程的,其中java.net.URL类和java.net.URLConection类使编程者方便地利用URL在Internet上进行网络通信。该DEMO是关于Java.net包常用类的使用介绍

    Java获取URL对应的资源 在JAVA中,Java.net包里面的类是进行网络编程的,其中java.net.URL类和java.net.URLConection类使编程者方便地利用URL在Internet上进行网络通信。1、认识URL(Java API doc)类 URL 代表一个...

    JAVA多媒体开发手册 JMF API

    在该状态下的Player对象正在为播放多媒体做一些准备工作,其中包括加载多媒体数据,获得需要独占的资源等。这个过程被称为预取(Prefetch)。 ● Prefetched:当Player对象完成了预取操作后就到达了该状态。 ● ...

    Java EE常用框架.xmind

    Java EE常用框架 WebService 介绍 基于Web的服务。... realm中获取认证的信息,查询出该用户对应的权限,封装到simpleAuthorizationInfo中,PermissionsAuthorizationFilter会根据对应的权限来比对。

    java 面试题 总结

    forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirect...

    使用Java异步编程实现一个简单的网络请求.txt

    首先,我们定义了一个URL地址和一个超时时间(TIMEOUT),然后使用ExecutorService创建了一个线程池,该线程池包含两个线程。接下来,我们通过调用executor.submit()方法提交了两个任务,分别对应GET和POST两种HTTP...

    Activiti5.13用户手册.zip

    15.28. 获得一个流程定义的资源内容 - URL参数 15.29. 获得流程定义的BPMN模型 - URL参数 15.30. 获得流程定义的BPMN模型 - 响应码 15.31. 暂停流程定义 - 请求的JSON参数 15.32. 暂停流程定义 - 响应码 15.33....

    java-servlet-api.doc

    RFC1738统一资源定位器(URL) RFC1808相关统一资源定位器 RFC1945超文本传输协议--HTTP/1.0 RFC2045多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第一部分:Internet信息体格式 RFC2046多用途Internet邮件...

    基于springboot+jpa实现java后台api接口,点餐系统源码+项目说明(高分毕设).zip

    #### 项目中的sql.txt文档中是创建对应表格所需的sql语句 ## api接口说明文档 #### 一,获取pv访问量 - url:https://30paotui.com/pv/2048/list - 请求方式:get - 返回的json数据如下 ``` { "code": 100, ...

    jdbc基础和参考

    线程安全的,一个数据库对应一个Sessionfactory(一般一个应用程序对应一个SessionFactory就够了) 3.是一个很大的缓存,本身维护了一个可配置的二级缓存 4.用来构建Session对象 Configuration 1.启动和配置...

    百度地图开发java源码-HttpDownload:基于socket的http多线程下载

    先发送head请求来获得请求资源的的基本信息,然后根据线程数,和range字头来的发送多个请求来获取数据。结束完成后将各个文件块整合。 现在只对MP4、.exe文件进行了测试,暂时可以下载下来。 还缺少的功能有: 文件...

    超级有影响力霸气的Java面试题大全文档

     forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。...

    java经典面试2010集锦100题(不看你后悔)

    B) 在Java中布尔类型不能和数字之间不能来回转换,即false和true不对应任何零或非零的值。 C) 双精度类型double比单精度类型float具有更高的精度和更大的表示范围,但float类型具有速度快、占用内存小的优点。 D) 在...

    +Flex+集成到+Java+EE+应用程序的最佳实践(完整源代码)

    资源简介现有的 Java EE 应用 假定我们已经拥有了一个管理雇员信息的 Java EE 应用,名为 EmployeeMgmt-Server,结构如 图 1 所示: 图 1. Java EE 工程结构 这是一个典型的 Java EE 应用,使用了流行的 ...

    ssm整合(springmvc+mybatis+myshoo+jsl)学生管理系统

    写Controller.java,连接页面请求和服务层,获取页面请求的参数,通过自动装配,映射不同的URL到相应的处理函数,并获取参数,对参数进行处理,之后传给服务层。 写JSP页面调用,请求哪些参数,需要获取什么数据。

    HttpClient以及获取页面内容应用

    2Java使用Url获取网页内容 2.1简介 项目的管理档t。 2.2应用 2.2.1获取网页内容 /** * 通过url获取网页内容, * 解决中文乱码问题 * @param httpUrl * @return */ public static String downloadPage...

    WebService服务端demo样例生成json

    一个简单实用的WebService服务端开发样例,采用Spring MVC,利用 x-fire资源,加入 log4j日志记录,加入maven来获取对应依赖。 该服务提供一个针对 TRSServer 全文检索服务器数据库 的检索功能,通过 url来执行全文...

    博主所搜寻的面试八股文,高达几万字,使用微软的脑图软件制作而成

    get重点在从服务器上获取资源,post重点在向服务器发送数据; 区别二: get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用"?"连接,多个请求数据间用"&"连接,如...

    JSP的九个内置对象及四个作用域

    JSP 九个内置对象及四个作用域 JSP(Java Server Pages)是一种基于Java的服务器端脚本...JSP四个作用域包括page、request、session和application四个作用域,分别对应着页面、请求、会话和应用程序四个级别的作用域。

    Sosoo 1.0网络爬虫程序.doc

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

    通过Python爬虫自建豆瓣电影API.zip

    成功运行之后可以通过 http://localhost:5000+对应URL和参数 来获取数据,URL和参数详见API文档。 建议直接部署使用,因为每次请求都要现爬取并处理数据,占用资源,响应比较慢,并且爬虫受限。可以在此基础上进行...

Global site tag (gtag.js) - Google Analytics