黑马程序员--基础--第三篇--URL和URLConnection认识

来源:互联网 发布:r语言与数据挖掘视频 编辑:程序博客网 时间:2024/05/22 15:22

ASP.Net+Android+IOS开发.Net培训期待与您交流!

URL类

又叫统一资源定位符(Uniform Resource Identifiers),比URI的范围小,URl可以解析条形码。

由于在浏览器中要解析链接信息,包括协议,主机,端口,路径等,每次都需要截取字符串取得相应的信息,然后再操作这些信息,十分的麻烦,这样,就可以使用URL这个类,该类封装了这些信息,有取得这些常用数据的方法,使用起来比较方便。

获取URL对象的属性
  getDefaultPort(): 返回默认的端口号。
  getFile(): 获得URL指定资源的完整文件名。
  getHost(): 返回主机名。
  getPath(): 返回指定资源的文件目录和文件名。
  getPort(): 返回端口号,默认为-1。
  getProtocol(): 返回表示URL中协议的字符串对象。
  getRef(): 返回URL中的HTML文档标记,即#号标记。
  getUserInfo: 返回用户信息。
  toString: 返回完整的URL字符串。


import java.net.*;public class URLTest{public static void main(String[] args){try{URL url = new URL("http://www.sogou.com/sogou?pid=sogou-site-664dd858db942cad&ie=utf8&query=java&searchRadio=on");System.out.println("File:"+url.getFile());System.out.println("Host:"+url.getHost());System.out.println("Path:"+url.getPath());System.out.println("Port:"+url.getPort());System.out.println("Protocol:"+url.getProtocol());System.out.println("Query:"+url.getQuery());}catch(MalformedURLException e){e.printStackTrace();}}
URLConnection类

该类比较特殊,它内部封装了Socket的对象,通过URL获取URLConnection对象,该对象有openConnection()方法,该方法可直接链接到链接所指的地址,由于封装了Socket对象,可以使用getInputStream()方法,获取输入流,然后读取服务器发来的信息。

该类最重要的是应用层的类,它把服务器发来的消息去掉响应头,用应用层的协议拆包,只把数据主体发送给客户端,内容类似于网页源码信息,而平常所写的客户端程序都有消息头。

import java.net.*;import java.io.*;public class URLConnectionTest{public static void main(String[] args)throws IOException{URL url = new URL("http://localhost:8080/myweb/myweb.html");URLConnection urlcon = url.openConnection();InputStream in = urlcon.getInputStream();byte[] arr = new byte[1024];int len = -1;len = in.read(arr);System.out.println(new String(arr,0,len));}}
对比结果如下



由以上信息可知,URLConnection将消息头拆包,只留有用信息展现给客户!

有两种方法可以用来访问Internet。一是利用URL类的openStream()方法;二是使用openConnection()方法创建一个URLConnection类的对象。
其中,方法openStream()与指定的URL建立连接并返回InputStream类的对象,以从这一连接中读取数据。


ASP.Net+Android+IOS开发.Net培训期待与您交流!

0 0