是否真的有必要使用url.openConnection()?

5 java url networking urlconnection

众所周知,这两个代码都会产生相同的结果

public class MainApp {
    public static void main(String[] args) throws IOException {
        URL google = new URL("http://www.google.com");
        google.openConnection();
        BufferedReader reader = new BufferedReader(new InputStreamReader(google.openStream()));
        reader.lines().forEach(System.out::println);
    }
}
Run Code Online (Sandbox Code Playgroud)

public class MainApp {
    public static void main(String[] args) throws IOException {
        URL google = new URL("http://www.google.com");
        BufferedReader reader = new BufferedReader(new InputStreamReader(google.openStream()));
        reader.lines().forEach(System.out::println);
    }
}
Run Code Online (Sandbox Code Playgroud)

那么使用的重点是什么 google.openConnection()?

ar4*_*ers 3

可能 javadoc 对于此方法有帮助:

public java.net.URLConnection openConnection() throws java.io.IOException

返回一个URLConnection实例,该实例表示与 所引用的远程对象的连接URLURLConnection每次调用 URLStreamHandler.openConnection(URL)此 URL 的协议处理程序的方法时都会创建一个新实例。

应该注意的是,URLConnection实例在创建时并不建立实际的网络连接。仅当调用 时才会发生这种情况URLConnection.connect()

如果对于URL的协议(例如 HTTP 或 JAR),存在URLConnection属于以下包之一或其子包之一的公共专用子类:java.langjava.iojava.utiljava.net,则返回的连接将属于该子类。例如,对于 HTTP,HttpURLConnection将返回 a,对于 JAR,JarURLConnection将返回 a。

如果您想向连接添加一些特定的连接属性,请使用此选项。

例如:

URLConnection urlConnection = google.openConnection();

urlConnection.setReadTimeout(1000);
urlConnection.setConnectTimeout(1000);
Run Code Online (Sandbox Code Playgroud)