Java获取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()
实现这两个类之间的转换。
(以上介绍来自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/p_w_upload/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\"
);
}
}
}
}
另外,还可以通过协议处理器自定义协议。
分享到:
相关推荐
Java获取URL对应的资源 在JAVA中,Java.net包里面的类是进行网络编程的,其中java.net.URL类和java.net.URLConection类使编程者方便地利用URL在Internet上进行网络通信。1、认识URL(Java API doc)类 URL 代表一个...
在该状态下的Player对象正在为播放多媒体做一些准备工作,其中包括加载多媒体数据,获得需要独占的资源等。这个过程被称为预取(Prefetch)。 ● Prefetched:当Player对象完成了预取操作后就到达了该状态。 ● ...
Java EE常用框架 WebService 介绍 基于Web的服务。... realm中获取认证的信息,查询出该用户对应的权限,封装到simpleAuthorizationInfo中,PermissionsAuthorizationFilter会根据对应的权限来比对。
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirect...
首先,我们定义了一个URL地址和一个超时时间(TIMEOUT),然后使用ExecutorService创建了一个线程池,该线程池包含两个线程。接下来,我们通过调用executor.submit()方法提交了两个任务,分别对应GET和POST两种HTTP...
15.28. 获得一个流程定义的资源内容 - URL参数 15.29. 获得流程定义的BPMN模型 - URL参数 15.30. 获得流程定义的BPMN模型 - 响应码 15.31. 暂停流程定义 - 请求的JSON参数 15.32. 暂停流程定义 - 响应码 15.33....
RFC1738统一资源定位器(URL) RFC1808相关统一资源定位器 RFC1945超文本传输协议--HTTP/1.0 RFC2045多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第一部分:Internet信息体格式 RFC2046多用途Internet邮件...
#### 项目中的sql.txt文档中是创建对应表格所需的sql语句 ## api接口说明文档 #### 一,获取pv访问量 - url:https://30paotui.com/pv/2048/list - 请求方式:get - 返回的json数据如下 ``` { "code": 100, ...
线程安全的,一个数据库对应一个Sessionfactory(一般一个应用程序对应一个SessionFactory就够了) 3.是一个很大的缓存,本身维护了一个可配置的二级缓存 4.用来构建Session对象 Configuration 1.启动和配置...
先发送head请求来获得请求资源的的基本信息,然后根据线程数,和range字头来的发送多个请求来获取数据。结束完成后将各个文件块整合。 现在只对MP4、.exe文件进行了测试,暂时可以下载下来。 还缺少的功能有: 文件...
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。...
B) 在Java中布尔类型不能和数字之间不能来回转换,即false和true不对应任何零或非零的值。 C) 双精度类型double比单精度类型float具有更高的精度和更大的表示范围,但float类型具有速度快、占用内存小的优点。 D) 在...
资源简介现有的 Java EE 应用 假定我们已经拥有了一个管理雇员信息的 Java EE 应用,名为 EmployeeMgmt-Server,结构如 图 1 所示: 图 1. Java EE 工程结构 这是一个典型的 Java EE 应用,使用了流行的 ...
写Controller.java,连接页面请求和服务层,获取页面请求的参数,通过自动装配,映射不同的URL到相应的处理函数,并获取参数,对参数进行处理,之后传给服务层。 写JSP页面调用,请求哪些参数,需要获取什么数据。
2Java使用Url获取网页内容 2.1简介 项目的管理档t。 2.2应用 2.2.1获取网页内容 /** * 通过url获取网页内容, * 解决中文乱码问题 * @param httpUrl * @return */ public static String downloadPage...
一个简单实用的WebService服务端开发样例,采用Spring MVC,利用 x-fire资源,加入 log4j日志记录,加入maven来获取对应依赖。 该服务提供一个针对 TRSServer 全文检索服务器数据库 的检索功能,通过 url来执行全文...
get重点在从服务器上获取资源,post重点在向服务器发送数据; 区别二: get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用"?"连接,多个请求数据间用"&"连接,如...
//实现对获取url对应的HttpDoc对象的监控 void webRobotUpdateQueueStatus(int length); //实现当前处理任务的监控 void webRobotDone(); //处理完成 void webRobotSleeping(boolean sleeping); //spider暂停 ...
成功运行之后可以通过 http://localhost:5000+对应URL和参数 来获取数据,URL和参数详见API文档。 建议直接部署使用,因为每次请求都要现爬取并处理数据,占用资源,响应比较慢,并且爬虫受限。可以在此基础上进行...
对于某些Java EE服务器,不支持HttpServlet Request调用getParameterMap()方法,此时可以设置该属性值为true来解决该问题.该属性的默认值是false.对于 WebLogic、Orion和OC4J服务器,通常应该设置该属性为true. struts....