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类的对象,以从这一连接中读取数据。