import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class UrlConnectionTest {
public void getUrlContent(String urlStr){
try {
URL url=new URL(urlStr);
URLConnection urlConn=url.openConnection();
urlConn.connect(); //连接指定URL
Map headers=urlConn.getHeaderFields(); //指定头部信息
//打印出所有头部信息
//由Map.Entry定义的getKey( )和getValue( )方法而显示。
//程序开始创建一个散列映射,然后将名字的映射增加到平衡表中。接下来,映射的内容通过使用由调用函数entrySet( )而获得的集合“视图”而显示出来。
//关键字和值通过调用
Set entrySet = headers.entrySet();
Iterator iter=entrySet.iterator();
System.out.println("获取指定头部信息:");
while(iter.hasNext()){
Map.Entry entry=(Map.Entry)iter.next();
System.out.println(entry.getKey()+":"+entry.getValue());
}
System.out.println("以指定方法获取url信息");
//获取文本类型和编码方式
System.out.println("contentType=" + urlConn.getContentType());
//获取信息长度
System.out.println("contentLength=" +urlConn.getContentLength());
//获取编码内容
System.out.println("contentTypeEncoding="+urlConn.getContentEncoding());
//获取创建日期
System.out.println("date="+new Date(urlConn.getDate()));
//获取过期时间
System.out.println("expiration="+new Date(urlConn.getExpiration()));
//获取最近修改日期
System.out.println("lastModified="+new Date(urlConn.getLastModified()));
System.out.println("开始获取信息主体:");
Scanner in=new Scanner(urlConn.getInputStream());
while(in.hasNextLine()){
System.out.println(in.nextLine()); //打印出每一行html代码
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
UrlConnectionTest test =new UrlConnectionTest();
test.getUrlContent("http://www.baidu.com");
}
}
Java类库提供一个URL和URLConnection类用于实现URL连接,这两个类隐藏了与服务器交互时复杂的连接以及数据交互。欲实现与服务器交互,首先必须将URL地址作为类URL构造方法的参数构建一个实例。
URL url=new URL(urlStr);
然后通过openConnection方法获取一个URLConnection对象,并通过URLConnection类的connect方法实现与服务器的连接。
URLConnection urlConn=url.openConnection();
urlConn.connect();
此时就可以从远程服务器获得想要的数据,方法getHeaderFields可以获得所有服务器返回的头部信息,并将这些信息封装在一个Map中。同样,getContentType可以获得服务返回的文本类型和编码方式。getContentLength可以获得服务器返回信息的长度。
getContentEncoding获得返回信息主题的编码格式,getDate方法会返回一个long类型数据。该数据的构造方法可以获得该数据代表的时间。getExpiration方法获得该URL代表信息的过期时间;getLastModifield方法获得该信息最后一次修改的时间,同样以long类型返回。URLConnection类的getInputStream方法获得一个该URL代表信息的主体输入流,再从中读取数据。