0

这是我正在使用打开 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 行没有与 app2 建立连接,而第 3 行没有?第二件事是为什么我在第 3 行之后得到文件 notfound 异常,即使它成功连接到我想避免的 app2。我的目的只是建立与 app2 的连接,以便我在 app2 的 java 代码中获得控制权

4

2 回答 2

0

来自 javadoc 的 connect() 方法预计不会执行此任务:

public abstract void connect()
                      throws IOException

如果此类连接尚未建立,则打开指向此 URL 引用的资源的通信链接。如果在连接已经打开时调用 connect 方法(由值为 true 的 connected 字段指示),则忽略该调用。 URLConnection 对象经历两个阶段:首先它们被创建,然后它们被连接。在创建之后和连接之前,可以指定各种选项(例如,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 回答