认识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"
);
}
}
}
}
|
另外,还可以通过协议处理器自定义协议。
分享到:
相关推荐
URLConnection connection = url.openConnection(); ``` `URLConnection`提供了多种配置方法,例如设置HTTP请求方法(GET、POST等)、设置请求头(如`Content-Type`、`Authorization`等)以及设置超时时间。例如,...
在Android开发中,`java.net.URL`类是一个非常重要的工具,用于表示统一资源定位符(Uniform Resource Locator),也就是我们常说的网址。这个类允许我们构建、解析和访问网络资源,对于进行网络通信至关重要。本篇...
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("Accept", "application/json"); if (connection....
在Java编程中,`java.net.URLConnection`是用于与各种Internet协议进行通信的抽象类,而HTTP(超文本传输协议)是最常见的应用之一。本文将深入探讨如何利用URLConnection类发送HTTP请求,理解其工作原理,并提供...
URLConnection connection = url.openConnection(); connection.setRequestProperty("User-Agent", "Java"); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String...
URLConnection connection = url.openConnection(); ``` 3. **配置连接**: `URLConnection`提供了设置请求属性的方法,如设置超时时间、代理服务器等。例如,设置连接超时时间为5秒: ```java connection....
访问带https请求忽略ssl证书,避免url.openStream报错javax.net.ssl.SSLHandshakeException url = new URL(imageUrl); if("https".equalsIgnoreCase(url.getProtocol())){ SslUtils.ignoreSsl(); } //不添加...
Java获取URL对应的资源 在JAVA中,Java.net包里面的类是进行网络编程的,其中java.net.URL类和java.net.URLConection类使编程者方便地利用URL在Internet上进行网络通信。1、认识URL(Java API doc)类 URL 代表一个...
它接受任意 URL 并将其转换为 java.net.URI 执行任何必要的操作,以使 Java 神们高兴。 Rant 包含在 Java 文档中。 URI javaIsOkayWithThis = GetURI.orDieTryin(demonicUrl);该方法包括以真实人类行为为模型的...
URLConnection connection = url.openConnection(); ``` 这里创建的是`HttpURLConnection`,因为URL是HTTP协议。 3. **配置请求参数**: 在发送请求之前,可能需要设置一些请求头或配置连接超时等参数: ```...
URLSniffer是一个用于捕获从java.net.URL嗅探到的URL,并将callig软件包名称和URL记录到logcat和Xposed日志中。 使用DalvikVM在运行Android 4.4.4且允许SELinux设置为允许的Nexus 5上进行构建和测试。 目前,...
Java获取URL内容的,我这里只给出GET方式的,POST和其它方式的都是比较类似的。其技术要点就一下三点。 第一:创建... try{ java.net.URL l_url = new java.net.URL(path); java.net.HttpURLConnection l_con
6. **URI和URL**:`java.net.URI`和`java.net.URL`类用于处理统一资源标识符和统一资源定位符,它们可以解析IPv6地址。 7. **配置和属性**:Java系统属性如`java.net.preferIPv6Addresses`和`java.net.preferIPv4...
在Java编程中,`java.net.HttpURLConnection`是用于处理HTTP协议的基本类,它提供了一种与HTTP服务器通信的简单方式。下面将详细讲解如何使用`HttpURLConnection`进行网页内容获取、Cookie管理以及POST方式的数据...
3、背景:尝试通过java.net.URL类的openConnection()方法打开一个网络连接,并进一步调用connect()方法来实际建立链接时报错的。 4、应该能让服务器识别客户端来源、认证信息、接受类型、内容类型等。 解决: ...
在Java编程中,`java.net.MalformedURLException`是一个常见的异常,通常在尝试创建或解析URL对象时遇到格式错误时抛出。这个异常表明传递给URL构造器的字符串不符合URL的标准格式。下面,我们将深入探讨这个异常的...
2. **构造URLClassLoader**:首先,使用`ConstantTransformer`创建`URLClassLoader`的Class对象,然后通过`InvokerTransformer`调用`getConstructor`方法,传入`java.net.URL[].class`作为参数,创建一个构造函数...
DataInputStream in = new DataInputStream(url.openStream()); String inputStream = null; inputStream = in.readLine(); while(inputStream!=null){ System.out.println(inputStream); inputStream ...
【项目源码】-java进销存管理系统 ... import java.awt.BorderLayout; import java.awt.Color; import java.awt.Image; import java.awt.Insets;...import java.net.URL; import java.util.HashMap; import java.util.Map;