Cyh的博客

Email:kissyan4916@163.com
posts - 26, comments - 19, trackbacks - 0, articles - 220

网络编程>>获取URL的信息

Posted on 2009-12-12 00:19 啥都写点 阅读(294) 评论(0)  编辑  收藏 所属分类: J2SE

  Java似乎是专门为网络设计的,用其开发网络软件特别便利,它对网络的操作都在IP层以上,也就是只能对TCP/UDP进行操作。Java的网络编程主要有3类:一是基于URL的网络编程,二是基于Socket的网络编程,三是基于UDP数据报的网络编程,此外,还可以通过Java获取本机的网络配置信息,如IP地址、域名等。所有关于网络编程的类库都在java.net包中。
    
         URL的格式由三部分组成:第一部分是协议(或称为服务方式);第二部分是存有该资源的主机IP地址或域名(有时也包括端口号);第三部分是主机资源的具体地址,如目录和文件名等。第一部分和第二部分之间用"://"符号隔开,第二部分和第三部分用"/"符号隔开,第一部分和第二部分不可缺少,第三部分可以省略。

         java.net.URL类描述一个URL,通过该类提供的get系列方法,能够获取URL的协议名、主机IP或者域名、端口号、主机资源的具体地址等信息。
        URL类的openConnection方法打开URL,得到一个URLConnection,该对象提供很多关于URL所引用的资源的信息,比如内容类型、内容的长度、编码方式、最后修改时间等。
        如果URL的协议时HTTP,那么还可以获得请求的方法、响应消息和响应代码。


import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.Date;

/**
 * 本例演示通过URL能够得到的信息
 *
*/

public class GetURLInfo {
    
/**
     * 输出一个URL相关的信息,主要使用了URLConnection类
     
*/

    
public static void printInfo(URL url) throws IOException {
        
// URL基本信息
        System.out.println("  File: " + url.getFile());
        System.out.println(
"  Protocol: " + url.getProtocol());
        System.out.println(
"  Host: " + url.getHost());
        System.out.println(
"  Port: " + url.getPort());
        System.out.println(
"  Path: " + url.getPath());
        
        
// 获取URLConnection对象
        URLConnection c = url.openConnection();
        
// 连接到URL,如果不能连接到URL,则会出现超时信息。
        c.connect();
    
        
// 显示信息
        System.out.println("  Content Type: " + c.getContentType());
        System.out.println(
"  Content Encoding: " + c.getContentEncoding());
        System.out.println(
"  Content Length: " + c.getContentLength());
        System.out.println(
"  Date: " + new Date(c.getDate()));
        System.out.println(
"  Last Modified: " +new Date(c.getLastModified()));
        System.out.println(
"  Expiration: " + new Date(c.getExpiration()));
    
        
// 如果是HTTP连接,则能提供更丰富的信息
        if (c instanceof HttpURLConnection) {
            HttpURLConnection h 
= (HttpURLConnection) c;
            System.out.println(
"  Request Method: " + h.getRequestMethod());
            System.out.println(
"  Response Message: " +h.getResponseMessage());
            System.out.println(
"  Response Code: " + h.getResponseCode());
        }

    }

    
    
public static void main(String[] args) {
        
try {
            String urlStr 
= "http://www.sina.com.cn:80/index.htm";
            URL url 
= new URL(urlStr);
            printInfo(url);
        }
 catch (Exception e) {
            System.err.println(e);
        }

    }

}



                                                                                                       --    学海无涯