java – URL.openConnection()第二次返回已打开的连接

我正在研究
Scala中的网站抓取应用程序.我正在抓取的网站是面向会话的,所以我必须先访问网站一次以获得会话ID,然后我才能做其他事情.

我得到连接以检索会话ID,如下所示:

url.openConnection().asInstanceOf[HttpURLConnection]

它工作正常.返回的HttpURLConnection的.connected字段为false,当我调用.connect()时它会翻转为true.没问题.

当我完成连接并在其上调用.disconnect()时,会出现第一个故障提示. .connected字段保持为真.嗯.

所以现在我已经获得了会话ID,并且我将获得具有我想要的表单的页面.我打电话

url.openConnection().asInstanceOf[HttpURLConnection]

再次,就像上次一样 – 事实上相同的代码 – 除了这次它给我的HttpURLConnection将.connected字段设置为true!我一开始以为它以某种方式给了我之前给它的同一个对象,但不,内存ID是不同的.

所以当然现在当我在连接上调用.setRequestProperty()时,它会出现IllegalStateException:已经连接.

我误解了如何使用HttpURLConnection吗?

注意:Scala 2.9.2,Java 6.0.另外,我调用.openConnection()的URL对象是不同的对象,不一样.

谢谢…

最佳答案 它被称为连接池,用于寻求HTTP Keep-alive.很好.你想要它.如果你真的没有,请调用disconnect()方法.

点赞