一、认识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指定的资源

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

Java代码

importjava.io.*;

importjava.net.URL;

importjava.net.URLConnection;

publicclassTestURL {

publicstaticvoidmain(String[] args)throwsIOException {

test4();

test3();

test2();

test();

}

/**

* 获取URL指定的资源。

*

* @throws IOException

*/

publicstaticvoidtest4()throwsIOException {

URL url =newURL("http://lavasoft.blog.51cto.com/attachment/200811/200811271227767778082.jpg");

//获得此 URL 的内容。

Object obj = url.getContent();

System.out.println(obj.getClass().getName());

}

/**

* 获取URL指定的资源

*

* @throws IOException

*/

publicstaticvoidtest3()throwsIOException {

URL url =newURL("http://www.hrtsea.com/down/soft/45.htm");

//返回一个 URLConnection 对象,它表示到 URL 所引用的远程对象的连接。

URLConnection uc = url.openConnection();

//打开的连接读取的输入流。

InputStream in = uc.getInputStream();

intc;

while((c = in.read()) != -1)

System.out.print(c);

in.close();

}

/**

* 读取URL指定的网页内容

*

* @throws IOException

*/

publicstaticvoidtest2()throwsIOException {

URL url =newURL("http://www.hrtsea.com/down/soft/45.htm");

//打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。

Reader reader =newInputStreamReader(newBufferedInputStream(url.openStream()));

intc;

while((c = reader.read()) != -1) {

System.out.print((char) c);

}

reader.close();

}

/**

* 获取URL的输入流,并输出

*

* @throws IOException

*/

publicstaticvoidtest()throwsIOException {

URL url =newURL("http://lavasoft.blog.51cto.com/62575/120430");

//打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。

InputStream in = url.openStream();

intc;

while((c = in.read()) != -1)

System.out.print(c);

in.close();

}

}

四、Java所支持的URL类型

Java代码

importjava.net.URL;

publicclassMainClass {

publicstaticvoidmain(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(inti =0; i

try{

URL u =newURL(schemes, host, file);

System.out.println(schemes +" is supported/r/n");

}catch(Exception ex) {

System.out.println(schemes +" is not supported/r/n");

}

}

}

}

java.net.url 兼容_java.net.Url类的应用(网络编程)相关推荐

  1. java url 协议_Java自定义URL协议

    Java提供了对URL协议进行扩展的能力,通过扩展用户可以自定义URL通信协议,JDK默认提供了对HTTP,FTP,JAR,FILE等的实现,而当需要自己定义通信协议的时候,就需要利用JDK提供的对U ...

  2. java获取网页编码_java根据URL获取网页编码

    由于很多原因,我们要获取网页的编码(多半是写批量抓取的脚本吧...嘻嘻嘻) 注意: 如果你的目的是获取不乱码的网页内容(而不是根据网址发送post请求获取返回值),切记切记,移步这里 先说思路: 有三 ...

  3. JAVA零学习之基础归纳(十八)--网络编程、协议、IP、基本API、URL、socket等

    [Java程序可以非常方便的访问互联网上的 HTTP服务.FTP服务等,并可以直接取得互联网上的远程资源,还可以向远程资源发送 GET.POST请求] 一.网络编程 1.1 网络概念和分类 所谓计算机 ...

  4. java版本不兼容_java 中jdk版本不兼容的问题小记

    "Unsupported major.minor version 51.0"的错误信息. 原因:执行环境中的JRE版本与被执行代码的class文件不兼容,一本是因为编译Java代码 ...

  5. 【尚硅谷_java基础】十五、网络编程

    文章目录 参考资料 1. 网络编程概述 2. 网络通信要素概述 2.1 如何实现网络中的主机互相通信 3. 通信要素1: IP和端口号 3.1 IP 地址: InetAddress 3.2 端口号 3 ...

  6. Java基础复习-八大基本数据类型-内存模型-基本算法-网络编程

    Java基础 数据类型: 基本数据类型: 整数型:byte short int long(数值型) 浮点型: float double(数值型) 字符型:char 布尔型:boolean 引用数据类型 ...

  7. JAVA初学者如何实现基于UDP和TCP协议的网络编程

    首先,我们需要先了解UDP协议.TCP协议的概念: 一.UDP协议:用户数据报协议,是一种无连接协议 二.TCP协议:文件传输协议,是一种面向连接的协议 他们都位于TCP/IP模型中的传输层,为整个网 ...

  8. java 下载url图片_java下载url图片链接

    1.从之前写的一篇中改写了代码,从远程的url链接中下载图片,并对各种浏览器的中文文件名进行展示 /** * 根据url路径下载图片 * @param filename 处理下载时显示设置好的中文名 ...

  9. java调用远程 接口_java通过url调用远程接口返回json数据

    java通过url调用远程接口返回json数据,有用户名和密码验证, 转自 https://blog.csdn.net/wanglong1990421/article/details/78815856 ...

最新文章

  1. Grunt安装中遇到的问题汇总
  2. JQuery添加扩展方法(理解$.extend(),与$.fn.extend()方法区别)
  3. Linux 上的高可用中间件
  4. Reactive Extensions for .NET (Rx)
  5. 数学建模第四节2020.4.24-5.3补
  6. 最短路最基本算法———Floyd算法
  7. 常用的函数式接口_Consumer接口的默认方法andThen
  8. 洛谷P2085ssl1411OJ1370-最小函数值【堆,贪心】
  9. 二级数据库access和mysql_二级数据库access和mysql
  10. android sdk shell,Android SDK命令行工具Monkey参数及使用解析
  11. endnote软件X9下载安装
  12. 黑客攻击入侵服务器的6种常见方式
  13. CorelDRAW X8 /CDR2020官方序列号密钥下载矢量绘图软件
  14. 转 vo、po、dto、bo、pojo、entity、mode如何区分
  15. 疯子、精神病患者、诗人、哲学家、伟大的思想家—— 尼采的孤独:《最孤独者》...
  16. javaweb课程设计:基于websocket的网络聊天室(所有的资源和代码还有详细步骤我都会提供)
  17. SSD固态硬盘测试工具收集(持续更新)
  18. 2022广东省安全员A证第三批(主要负责人)试题及模拟考试
  19. 【经验分享】Web前端开发测试常见问题总结
  20. 机器人python极客pdf_机器人Python极客编程入门与实战

热门文章

  1. Django(10)-模板层的变量和标签
  2. soc验证 c语言,一种Soc芯片验证方法与流程
  3. Java比较两个数组是否相等(equals())
  4. zlg72128数码管驱动管理显示芯片
  5. c#创建word 表格垂直居中
  6. Python中的取模运算
  7. 2018秋招历程之28所
  8. java3d关闭透视,3DMax怎么去除透视效果?3D新手请详解?
  9. MySQL的 validate_password插件 和 validate_password组件
  10. 递归——自己调用自己的特殊形式