建立URLConnection的另一个Web应用程序不具有的URLConnection .conne

2019-10-31 23:15发布

下面是我使用的是开放的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行后的文件NOTFOUND例外,即使它成功地连接到APP 2,我想avoid.My意图只是为了建立APP2连接,使我得到APP2我的Java代码内部人控制

Answer 1:

该方法的名称可能是你的问题的根源。 的openConnection()方法不建立连接,它只是准备连接对象。 这里是链接到该方法的API:

URL.openConnection()

写有以下内容:“应当指出的是,一个URLConnection实例不建立对创造实际的网络连接这只会调用URLConnection.connect()时发生的。”

编辑:我都弄得线(感谢ANKIT)因此,上述是不相关的。 Connecet不建立连接,但实际上作为方法的getInputStream将建立连接,如果不是已经确定它是不是在这里需要它。



Answer 2:

不期望的connect()方法来完成这个任务,从javadoc中:

public abstract void connect()
                      throws IOException

打开一个通信链接此URL引用的资源,如果这样的连接尚未建立。 如果当连接已经被打开的连接方法被调用(由具有值真所连接的字段所指示),该呼叫将被忽略。 URLConnection对象经历两个阶段:首先它们被创建,然后将它们连接。 被创建之后,并且被连接之前,各种选项可以指定(例如,和则将DoInput的useCaches)。 连接后,它是一个错误尝试设置它们。 依赖于操作连接,像getContentLength,如果有必要将隐式执行连接。



文章来源: Establishing the URLConnection to another web application does not work with URLConnection .connect()?