骏马金龙 (新博客:www.junmajinlong.com)

网名骏马金龙,钟情于IT世界里的各种原理和实现机制,强迫症重症患者。爱研究、爱翻译、爱分享。特借此一亩三分田记录自己成长点滴!!!

java URL和URLConnection

URL类将URL地址封装成对象,提供了解析URL地址的方法,如获取uri部分、host部分、端口等。

URLConnection则是URL对象和Socket连接给结合起来了,使得可以更轻松地获取发起URL请求的连接套接字。

1.URL

import java.net.MalformedURLException;
import java.net.URL;

public class URLDemo {

    public static void main(String[] args) throws MalformedURLException {

        URL url = new URL("http://192.168.0.124:8080/webapp/index.html?name=lisi");

        int port = url.getPort();
        String host = url.getHost();
        String uri_path = url.getPath();
        String request_file = url.getFile();
        String query = url.getQuery();

        System.out.println("host: "+ host);
        System.out.println("port: "+ port);
        System.out.println("uri_path: "+ uri_path);
        System.out.println("request_file: "+ request_file);
        System.out.println("query: "+ query);
    }
}

2.URLConnection

通过URL的openConnection()方法可以获取URLConnection对象,这个对象是面对这个URL的连接。

也就是说,这个对象其实是一个已连接套接字,它不仅具有解析http响应报文的功能,还具有套接字的相关功能(例如获取输入流、输出流等)。

仅就解析对象来说,URL对象解析的是URL地址,可以看作是解析http请求报文(如getPort(),getFile()等),而URLConnection则解析的是http响应报文(如getLastModified(),getHeaderFields()等)

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;


public class URLConnectionDemo {

    public static void main(String[] args) {
        try {
            URL url = new URL("https://www.baidu.com/");
            URLConnection urlc = url.openConnection();

            System.out.println(urlc.getURL());  //解析http响应报文

            InputStream is = urlc.getInputStream();
            byte[] buf = new byte[1024];
            int len = 0;
            while((len=is.read(buf))!=-1) {
                System.out.println(new String(buf,0,len));
            }

        } catch (MalformedURLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

注:若您觉得这篇文章还不错请点击右下角推荐,您的支持能激发作者更大的写作热情,非常感谢!

posted @ 2018-01-09 15:22  骏马金龙  阅读(1165)  评论(0编辑  收藏  举报