Java中的URL类
Java的网络类可以让你通过网络或者远程连接来实现应用。而且,这个平台现在已经可 以对国际互联网以及URL资源进行访问了。Java的URL类可以让访问网络资源就像是访问你本地的文件夹一样方便快捷。我们通过使用Java的URL类 就可以经由URL完成读取和修改数据的操作。
通过一个URL连接,我们就可以确定资源的位置,比如网络文件、网络页面以及网络应用程序等。其中包含了许多的语法元素。
从URL得到的数据可以是多种多样的,这些都需要一种统一的机制来完成对URL的读取与修改操作。Java语言在它的java.net软件包里就提供了这么一种机制。
URL class是从URL标示符中提取出来的。它允许Java程序设计人员打开某个特定URL连接,并对里边的数据进行读写操作以及对首部信息进行读写操作。而且,它还允许程序员完成其它的一些有关URL的操作。
构造
在创建java.net URL的实例的时候,你能够利用许多公共构造器,从而让其变得更具灵活性。举个例子来说,这个class提供了一种使用完整URL信息串的构造器,一种使 用把URL信息串分解成为协议、主机名以及文件和资源的构造器,还有一种把URL信息串分解成为协议、主机名、端口号以及文件的构造器。我们首先使用完整 的URL来创建一个URL class的例子:
URL aURL = new URL(“http://www.mycompany.com:8080/index.html”);
在这个例子中,我们创建了一个使用完整URL的URL class,其中明确指出了使用的协议是http,主机名称是www.mycompany.com,端口号码为8080,文件/资源为 index.html。如果组成URL的语法发生了错误,那么构造器就会发出MalformedURLException。
连接
一旦你成功的创建了一个URL class的实例,你就可以对其进行操作了。但是在你能够访问这个URL上的资源和内容之前,你必须要打开到这些资源与内容上的连接。你可以通过使用openConnection来完成这一操作。
使用openConnection并不需要参数,并且在操作成功之后,它会返回一个URLConnection class的实例。在Listing A中,向我们演示了打开一个到URL连接的过程。一旦你的连接成功,你就可以开始对这个URLConnection的输入以及输出流进行读和写的操作了。
从URL连接中读取数据
使用java.io stream class来从URL中读取数据是一个非常简单的过程。一旦你建立了一个成功的连接,那么你就可以获得针对这个连接的输入流并且开始进行写的操作了。很幸 运的是,java.io classes可以以与对文件流或者socket流进行操作的同样方式进行对从URLConnection流返回的数据进行操作。
对URL进行写的操作
使用java.io stream classes对URL进行写的操作同样也是非常简单的。一旦你建立了一个成功的连接之后,你就可以得到来自此连接的输出流并且开始进行写的操作。当然, 只有对于客户所希望的数据进行写的操作才是有意义的。同样的,在获得并对URLConnection流进行写的操作之前,你还需要使用 setDoOutput(boolean)方式把输出(Output)属性设置为真(true)来指定可以进行写操作的那些连接。Java.io classes允许你把数据写到URLConnection流,这个操作也和你对文件流和socket流进行的写操作一样。
其它的操作
你可以从URL以及URLConnection对象连接中得到其它类型的信息,比如说主机名、端口、内容长度、内容编码以及内容的类型。把这些方法连同stream I/O classes一起使用可以让你建立复杂而有效的网络客户应用程序和服务。
对网络的便捷访问
由Java平台所提供的URL class让我们可以方便而有效的访问网络上的资源,而且可以让我们象访问本地文件一样的感到轻松愉快。我们不用为网络通讯的细节问题操心,只需要把注意力集中到制作有用的应用程序和服务上去。
三种连接方法:
// 方法一
URL url = new URL("http://www.sina.com.cn");
URLConnection urlcon = url.openConnection();
InputStream is = urlcon.getInputStream(); // 方法二
URL url = new URL("http://www.yhfund.com.cn");
HttpURLConnection urlcon = (HttpURLConnection)url.openConnection();
InputStream is = urlcon.getInputStream(); //方法三
URL url = new URL("http://www.yhfund.com.cn");
InputStream is = url.openStream();
具体例子:
long begintime = System.currentTimeMillis(); URL url = new URL("http://www.yhfund.com.cn");
HttpURLConnection urlcon = (HttpURLConnection)url.openConnection();
urlcon.connect(); //获取连接
InputStream is = urlcon.getInputStream();
BufferedReader buffer = new BufferedReader(new InputStreamReader(is));
StringBuffer bs = new StringBuffer();
String l = null;
while((l=buffer.readLine())!=null){
bs.append(l).append("/n");
}
System.out.println(bs.toString()); //System.out.println(" content-encode:"+urlcon.getContentEncoding());
//System.out.println(" content-length:"+urlcon.getContentLength());
//System.out.println(" content-type:"+urlcon.getContentType());
//System.out.println(" date:"+urlcon.getDate()); System.out.println("总共执行时间为:"+(System.currentTimeMillis()-begintime)+"毫秒");
}catch(IOException e){
System.out.println(e);
}
}
}
Java中的URL类的更多相关文章
- 带有静态方法的类(java中的math类)
带有静态方法的类通常(虽然不一定是这样)不打算被初始化. 可以用私有构造函数来限制非抽象类被初始化. 例如,java中的math类.它让构造函数标记为私有,所以你无法创建Math的实例.但Math类却 ...
- java中的File类
File类 java中的File类其实和文件并没有多大关系,它更像一个对文件路径描述的类.它即可以代表某个路径下的特定文件,也可以用来表示该路径的下的所有文件,所以我们不要被它的表象所迷惑.对文件的真 ...
- Java基础(43):Java中的Object类与其方法(转)
Object类 java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. O ...
- java中基于TaskEngine类封装实现定时任务
主要包括如下几个类: 文章标题:java中基于TaskEngine类封装实现定时任务 文章地址: http://blog.csdn.net/5iasp/article/details/10950529 ...
- Java中的Unsafe类111
1.Unsafe类介绍 Unsafe类是在sun.misc包下,不属于Java标准.但是很多Java的基础类库,包括一些被广泛使用的高性能开发库都是基于Unsafe类开发的,比如Netty.Hadoo ...
- Java中遍历实体类(处理MongoDB)
在实际过程中,经常要将实体类进行封装,尤其是处理数据库的过程中:因此,对于遍历实体类能够与数据库中的一行数据对应起来. 我是使用的环境是Spring boot,访问的数据库时MongoDB 实体类遍历 ...
- java中遍历实体类,获取属性名和属性值
方式一(实体类): //java中遍历实体类,获取属性名和属性值 public static void testReflect(Object model) throws Exception{ for ...
- Java中的BigDecimal类精度问题
bigdecimal 能保证精度的原理是:BigDecimal的解决方案就是,不使用二进制,而是使用十进制(BigInteger)+小数点位置(scale)来表示小数,就是把所有的小数变成整数,记录小 ...
- java 中常用的类
java 中常用的类 Math Math 类,包含用于执行基本数学运算的方法 常用API 取整 l static double abs(double a) 获取double 的绝对值 l sta ...
随机推荐
- DOM(文档对象模型)
1.定义: DOM是Document Object Model文档对象模型的缩写.是针对HTML和XML文档的一个API,通过DOM可以去改变文档. 例如:我们有一段HTML,那么如何访问第二层第一个 ...
- 你想要了解但是却羞于发问的有关SSL的一切
Everything You Ever Wanted to Know About SSL (but Were Afraid to Ask) Or perhaps more accurately, &q ...
- JVM:查看java内存情况命令
jmap (linux下特有,也是很常用的一个命令) 观察运行中的jvm物理内存的占用情况. 参数如下: -heap :打印jvm heap的情况 -histo: 打印jvm heap的直方图.其输出 ...
- bootstrap学习笔记--bootstrap布局方式
Bootstrap 3 是移动设备优先的,在这个意义上,Bootstrap 代码从小屏幕设备(比如移动设备.平板电脑)开始,然后扩展到大屏幕设备(比如笔记本电脑.台式电脑)上的组件和网格. 移动设备优 ...
- Netty源码分析之客户端启动过程
一.先来看一下客户端示例代码. public class NettyClientTest { public void connect(int port, String host) throws Exc ...
- centos6.5 mysql-server 5.1.73启动失败
yum install mysql-server 安装mysql服务端会把相应的客户端也装上 service mysqld start 启动mysql服务 解决办法: 1.chomod 777 / ...
- MySQL中的常用工具
一.mysql 客户端连接工具 二.myisampack MyISAM表压缩工具 三.mysqladmin MySQL管理工具 四.mysqlbinlog 日志管理工具 五.mysqlcheck My ...
- 带参方法的执行:普通方法的查询,可为空方法的查询。批量处理SQL语句。
普通方法的查询: @Override public List<Map<String, Object>> selectSpentAmount(Integer MAT_TYPE_, ...
- PHP代码获取客户端IP地址经纬度及所在城市
echo $_SERVER['HTTP_HOST'];//echo $_SERVER['REQUEST_URI'];$getIp=$_SERVER["REMOTE_ADDR"];e ...
- springMVC的配置文件路径问题
① <init-param> <param-name>contextConfigLocation</param-name> <param-value>c ...