簡體   English   中英

建立URLConnection的另一個Web應用程序不具有的URLConnection .connect工作()?

[英]Establishing the URLConnection to another web application does not work with URLConnection .connect()?

下面是我使用的是開放的URLConnection的另一個webapllication代碼

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號線不建立與APP 2,而3號線確實連接? 第二件事是為什么即使第3行成功連接到我想避免的app2后,我仍然沒有找到文件異常,我的意圖只是建立與app2的連接,以便我可以在app2的java代碼中獲得控制權

方法名稱可能是您感到困惑的根源。 openConnection()方法不會建立連接,它只是准備連接對象。 這是該方法的API的鏈接:

URL.openConnection()

如下所示:“應注意,URLConnection實例在創建時未建立實際的網絡連接。只有在調用URLConnection.connect()時才會發生這種情況。”

編輯:我已經混淆了線路(感謝Ankit),因此上述內容不相關。 Connecet確實建立了連接,但實際上這里不需要它,因為如果尚未建立連接,則getInputStream方法將建立連接。

從javadoc不需要connect()方法執行此任務:

public abstract void connect()
                      throws IOException

如果尚未建立此URL引用的資源的連接,則打開一個通信鏈接。 如果在已經打開連接時調用connect方法(由值true的connected字段指示),則該調用將被忽略。 URLConnection對象經歷兩個階段:首先創建它們,然后將它們連接。 在創建之后和連接之前,可以指定各種選項(例如doInput和UseCaches) 連接后,嘗試設置它們是錯誤的。 如果需要,依賴於連接的操作(如getContentLength)將隱式執行連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM