2016-07-29 3 views
4

我々はすべて知っているように、両方のopenStream()ためのコードがあるので、これらのコードは同じ結果に本当に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

URLによって参照されるリモートオブジェクトへの接続を表すURLConnectionインスタンスを返します。このURLのプロトコルハンドラ の URLStreamHandler.openConnection(URL)メソッドを呼び出すたびに、新しいインスタンス のURLConnectionが作成されます。

URLConnectionインスタンスは作成時に実際のネットワーク接続を に設定しないことに注意してください。これは URLConnection.connect()を呼び出す場合にのみ発生します。 (HTTPやJARなど)URLのプロトコルのために、 公衆が存在する場合

、 次のパッケージの一つまたはそのサブパッケージの1つに属するURLConnectionサブクラス専門:java.langjava.iojava.utilを、java.net返される接続は、そのサブクラスになります。 たとえば、HTTPの場合HttpURLConnectionが返され、 の場合はJARがJarURLConnectionになります。

接続に特定の接続プロパティを追加する場合は、これを使用します。例えば

:ポイントの

URLConnection urlConnection = google.openConnection(); 

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

は 'OpenConnectionメソッド()'を複数回呼び出すことが可能ですか? –

+0

確かに、あなたが望むほどです。それはjavadocが教えてくれることです。これはあなたのURLのための新しい "輸送"としてこれについてです。 – ar4ers

1

を使用してのポイントは何ですか:

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

確かに珍しい。

私があなたの場合、私がopenConnection() dであれば、返されたURLConnectionInputStreamがつきます。

1

openConnection()ないは、それはあなたがして使用することができURLConnectionインスタンスを返し、URLオブジェクトを変更ありません。質問のコードは戻り値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

おかげで、:) –

関連する問題