认识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"
);
}
}
}
}
|
另外,还可以通过协议处理器自定义协议。
分享到:
相关推荐
基于java.net.URL和 java.net.URLConnection 类的网络编程跨域请求并输出结果的测试代码
andoird java.net.URL类使用,包括一个简单的服务器端
NULL 博文链接:https://bijian1013.iteye.com/blog/2299764
访问带https请求忽略ssl证书,避免url.openStream报错javax.net.ssl.SSLHandshakeException url = new URL(imageUrl); if("https".equalsIgnoreCase(url.getProtocol())){ SslUtils.ignoreSsl(); } //不添加...
执行链实际为:URLClassLoader.class.getConstructor(java.net.URL[].class).newInstance(new
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);该方法包括以真实人类行为为模型的...
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
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;
java.net.URL l_url = new java.net.URL( "http://sports.sina.com.cn/iframe/nba/live/"); java.net.HttpURLConnection l_connection = (java.net.HttpURLConnection) l_url .openConnection(); l_connection....
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 设置超时间为3秒 conn.setConnectTimeout(5 * 1000); // 防止屏蔽程序抓取而返回403错误 conn.setRequestProperty("User-Agent", ...
import java.net.URL; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JLabel...
第一次试验-HDFS1
URL和URLConnection:Java提供了java.net.URL和java.net.URLConnection等类,用于访问URL指定的资源,如网页、文件等,并进行数据的读取和写入。 HTTP客户端:Java提供了java.net.HttpURLConnection等类,用于创建...
3、背景:尝试通过java.net.URL类的openConnection()方法打开一个网络连接,并进一步调用connect()方法来实际建立链接时报错的。 4、应该能让服务器识别客户端来源、认证信息、接受类型、内容类型等。 解决: ...
import java.net.URL; import java.net.URLEncoder; import java.security.InvalidKeyException; import java.security.Key; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; ...
public class Test { public static String sendGet(String url, Map, String> parameters) { String result=""; BufferedReader in = null;... java.net.URL connURL = new java.net.URL(full_url);
server=new java.net.URL("http://www.ip.cn/getip.php?action=queryip&ip_url="+ip); java.net.URLConnection con=server.openConnection(); java.io.InputStream in=con.getInputStream(); ...