Java 建立到另一个web应用程序的URLConnection不适用于URLConnection.connect()?

Java 建立到另一个web应用程序的URLConnection不适用于URLConnection.connect()?,java,jakarta-ee,urlconnection,httpsurlconnection,Java,Jakarta Ee,Urlconnection,Httpsurlconnection,下面是我正在使用的打开URL连接到另一个WebApp应用程序的代码 try { URL url = new URL("https://mySecondWebApp/Cart"); HttpsURLConnection conn1 = (HttpsURLConnection) url.openConnection();//line1 conn1 .connect();//line 2 does not establishes the connection conn1.getInp

下面是我正在使用的打开URL连接到另一个WebApp应用程序的代码

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行却与app2建立连接? 第二件事是为什么我在第3行之后出现文件notfound异常,即使它成功地连接到我想要避免的app2
只是为了建立到app2的连接,以便在app2的java代码中获得控制权,方法名可能是您混淆的根源。openConnection()方法不建立连接,它只是准备连接对象。以下是该方法的API链接:

下面是这样写的:“应该注意,URLConnection实例在创建时不会建立实际的网络连接。只有在调用URLConnection.connect()时才会发生这种情况。”

编辑: 我混淆了这些线(谢谢Ankit),因此上述内容不相关。 Connecet确实建立了连接,但实际上这里不需要它,因为如果尚未建立连接,则getInputStream方法将建立连接。

不希望connect()方法执行此任务,从javadoc:

public abstract void connect()
                      throws IOException
打开指向此URL引用的资源的通信链接(如果尚未建立此类连接)。 如果在连接已打开时调用connect方法(由值为true的connected字段指示),则忽略该调用。
URLConnection对象经历两个阶段:首先创建它们,然后连接它们。在创建之后和连接之前,可以指定各种选项(例如doInput和UseCaches)。连接后,尝试设置它们是错误的。如有必要,依赖于连接的操作(如getContentLength)将隐式执行连接

但是URLConnection.connect()也不会建立conn1。getInputStream()会建立连接,但问题是我也会得到错误,即java.io.FileNotFoundException:在conn1.getInputStream()得到executed@A.J.:我不明白为什么第2行不与app2建立连接,而第3行却与app2建立连接。第2行为conn1.connect();好的,我终于找到了:)请查看@BalusC的以下帖子:我所写的只是我记忆中的一小部分。因此,请忽略我的答案(请不要接受),并阅读这篇文章,因为它很可能会解释您在这一阶段可能想知道的一切。@A.J.conn1.getInputStream()确实成功地建立了连接并在app2上执行了代码,但问题是,在conn1.getInputStream()执行之后,我还得到了一个错误,即java.io.FileNotFoundException:mySecondWebApp/Cart。我不知道如何解决这个问题,也不知道为什么会出现这个问题。似乎服务器返回了一个错误,因此,当您调用getInputStream时,您得到的是找不到的文件。尝试以下操作:使用getInputStream注释掉该行。保留带有connect()的。在其后面添加以下内容以查看服务器返回的状态:int status=conn1.getResponseCode();你得到了什么代码?试着检查HttpsURLConnection的代码,或者通过API文档,你会得到docs.oracle.com/javase/tutorial/networking/url/connecting.html的答案,看起来connect和get inputstream都应该连接到app2。请参阅并不总是需要显式连接的行。。。在链接中。但在我的例子中,只有getinputstream在这样做?不知道为什么?也不明白为什么我在执行粗体行conn1.getInputStream()时会出现filenotfound异常:“首先创建它们”,这就是openConnection。“然后它们被连接”,即使用connect()或其他方法,使connect隐式地类似于getInputStream或getContentLength。Ankit根据,看起来connect和get inputstream都应该连接到app2。请参阅不总是需要显式连接的行。。。在链接中。但在我的例子中,只有getinputstream在这样做?不知道为什么?你有什么办法可以提供你的输入我在A.J.上的最后一个评论。如果我没有得到filenotfound异常,那么我的生活就很容易从你的app2 URL返回你试图调用的东西,返回response.getWriter.write(“write something”);。另一种(不好的)方法是为特定异常设置catch块,然后在该块中什么也不做。