2016-07-29 2 views
4

Как мы все знаем, как эти коды будут давать один и тот же результатДействительно ли нужно использовать url.openConnection()?

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); 
    } 
} 

и

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); 
    } 
} 

Так что смысл в использовании google.openConnection()?

ответ

1

Может быть Javadoc для этого метода помогает:

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

Возвращает экземпляр URLConnection, который представляет соединение с удаленным объектом, на которое ссылается URL. Новый экземпляр из URLConnection создается каждый раз при вызове метода обработчика протокола URLStreamHandler.openConnection(URL) для этого URL-адреса.

Следует отметить, что экземпляр URLConnection не устанавливает фактическое сетевое соединение при создании. Это произойдет только тогда, когда вызывает URLConnection.connect().

Если для ПРОТОКОЛА URL «s (например, HTTP или JAR), существует общественности, специализированный URLConnection подкласс, принадлежащий к одному из следующих пакетов или одного из их подпакетов: java.lang, java.io, java.util, java.net , возвращенное соединение будет из этого подкласса. Например, для HTTP возвращается HttpURLConnection, а для JAR a JarURLConnection будет возвращен.

Используйте это, если вы хотите добавить некоторые конкретные свойства подключения к вашему соединению.

Например:

URLConnection urlConnection = google.openConnection(); 

urlConnection.setReadTimeout(1000); 
urlConnection.setConnectTimeout(1000); 
+0

Можно ли вызвать 'OpenConnection()' в несколько раз? –

+0

Конечно, сколько хотите. Это Джавадок говорит нам. Это об этом как о новом «транспорте» для вашего URL-адреса. – ar4ers

1

Поскольку код для openStream() является:

public final InputStream openStream() throws java.io.IOException { 
    return openConnection().getInputStream(); 
} 

Кажется, на самом деле.

Но если бы я был вами, если бы я openConnection() d, я бы получил InputStream по возвращенному URLConnection.

1

openConnection() делает не изменить URL объект, он возвращает URLConnection экземпляр, который вы могли бы использовать. Код в вопросе игнорирует возвращаемое значение openConnection(), поэтому в этом случае это действительно бессмысленно. это будет только полезно, если вы на самом деле сделать что-то с этим объектом соединения, такие как, например, изменяя его тайм-аут:

URL google = new URL("http://www.google.com"); 
URLConnection conn = google.openConnection(); 
conn.setTimeout(7); // just an example 
BufferedReader reader = 
    new BufferedReader(new InputStreamReader(conn.getInputStream())); 
reader.lines().forEach(System.out::println); 
+0

Спасибо, за точку :) –

 Смежные вопросы

  • Нет связанных вопросов^_^