美文网首页
java学习-URLConnection类的学习

java学习-URLConnection类的学习

作者: BuddhaCoder | 来源:发表于2018-10-31 23:34 被阅读0次

    上回写了一个简单的Socket类发送HTTP请求,发现Socket类发送HTTP请求非常麻烦,需要首先写入HTTP请求行的内容,有的时候还需要模拟请求头的信息,非常之麻烦。所以这里有了URLConnection的研究。

    还是先看看这个类的构造函数:

    protected URLConnection(URL url)
    构造与指定URL的URL连接。
    发现只有一个构造函数,异常之简单,只需要构造一个URL类就OK

    常用方法:

    检索此URL连接的内容。
    如果这里是HTTP请求的话,那么将返回一个InputStream对象
    String getContentEncoding()
    返回 content-encoding标题字段的值。
    InputStream getInputStream()
    返回从此打开的连接读取的输入流。
    OutputStream getOutputStream()
    返回写入此连接的输出流。
    int getReadTimeout()
    返回读取超时的设置。
    Map<String,List<String>> getRequestProperties()
    返回此连接的一般请求属性的不可修改映射。
    String getRequestProperty(String key)
    返回此连接的命名的常规请求属性的值。
    URL getURL()
    返回此 URLConnection的 URL字段的值。
    void setConnectTimeout(int timeout)
    设置打开与此URLConnection引用的资源的通信链接时使用的指定超时值(以毫秒为>单位)。
    void setReadTimeout(int timeout)
    将读取超时设置为指定的超时时间,以毫秒为单位。
    void setRequestProperty(String key, String value)
    设置一般请求属性。

    还是一个简单的demo

    package cn.ljtnono.net;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.net.URLConnection;
    
    public class SpiderDemo2 {
        
        public static void main(String[] args) {
            URL url;
            BufferedReader br = null;
            BufferedWriter bw = null;
            URLConnection urlc = null;
            try {
                url = new URL("http://www.baidu.com/");
                urlc = url.openConnection();
                InputStream content = (InputStream) urlc.getContent();
                br = new BufferedReader(new InputStreamReader(content,"UTF-8"));
                String line = null;
                while ((line = br.readLine()) != null) {
                    System.out.println(line);
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                try {
                    if (br != null) {
                        br.close();
                    }
                    if (bw != null) {
                        bw.close();
                    }
                    
                } catch (IOException e) {
                    // TODO: handle exception
                    e.printStackTrace();
                }
            }
        }
    }
    

    这个Demo获取的百度搜索页面,如果需要做爬虫,就用相应的解析工具进行解析就OK了。

    相关文章

      网友评论

          本文标题:java学习-URLConnection类的学习

          本文链接:https://www.haomeiwen.com/subject/qjaztqtx.html