0

これは、別のWebアプリケーションへのURLConnectionを開くために使用しているコードです

try {   
 URL   url = new URL("https://mySecondWebApp/Cart");
 HttpsURLConnection conn1 = (HttpsURLConnection) url.openConnection();//line1
 conn1 .connect();//line 2 does not establishes the connection
 conn1.getInputStream();// line 3 works which means that i get control to my app2 in debugger.But this also passes the control to IOException stating error java.io.FileNotFoundException: https://mySecondWebApp/Cart

 }
  catch (MalformedURLException e) {
    log.error("MalformedURLException" + e);

  }
  catch (IOException e) {

  log.info("getting IO error");
  }

なぜライン 2 は app2 との接続を確立しないのに、ライン 3 は確立しないのですか? 2つ目は、回避したいapp2に正常に接続しているにもかかわらず、3行目の後にファイルnotfound例外が発生する理由です。私の意図は、app2への接続を確立して、app2のJavaコード内で制御を取得することです。

4

2 に答える 2

0

javadoc から、connect() メソッドがこのタスクを実行することは想定されていません。

public abstract void connect()
                      throws IOException

そのような接続がまだ確立されていない場合、この URL によって参照されるリソースへの通信リンクを開きます。接続がすでに開かれているときに connect メソッドが呼び出された場合 (値 true を持つ connected フィールドによって示されます)、呼び出しは無視されます。 URLConnection オブジェクトは 2 つのフェーズを経ます。最初に作成され、次に接続されます。作成後、接続前に、さまざまなオプションを指定できます (doInput や UseCaches など)。接続後、設定しようとするとエラーになります。getContentLength などの接続に依存する操作は、必要に応じて暗黙的に接続を実行します。

于 2012-07-26T06:57:50.293 に答える
0

メソッド名はおそらく混乱の元です。openConnection() メソッドは接続を確立せず、接続オブジェクトを準備するだけです。メソッドの API へのリンクは次のとおりです。

URL.openConnection()

「URLConnection インスタンスは、作成時に実際のネットワーク接続を確立しないことに注意してください。これは、URLConnection.connect() を呼び出す場合にのみ発生します。」

編集: 私は行を混乱させました(おかげでAnkit)。したがって、上記は関係ありません。Connecet は接続を確立しますが、まだ確立されていない場合はメソッド getInputStream が接続を確立するため、実際にはここでは必要ありません。

于 2012-07-26T06:36:02.627 に答える