gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:26:30 26 4
gpt4 key购买 nike

我正在使用 Scala 开发网站抓取应用程序。我正在抓取的网站在很大程度上是面向 session 的,因此我必须先访问该网站一次以获取 session ID,然后才能执行其他任何操作。

我像这样获取用于检索 session ID 的连接:

url.openConnection().asInstanceOf[HttpURLConnection]

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

当我完成连接并对其调用 .disconnect() 时,第一个问题出现了。 .connected 字段保持为真。嗯。

所以现在我有了我的 session ID,然后我去获取具有我想要的表单的页面。我叫

url.openConnection().asInstanceOf[HttpURLConnection]

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

当然,现在当我在连接上调用 .setRequestProperty() 时,它会因 IllegalStateException: Already connected 而爆炸。

我是否误解了如何使用 HttpURLConnection?

注释:Scala 2.9.2,Java 6.0。此外,我调用 .openConnection() 的 URL 对象是不同的对象,不相同。

谢谢...

最佳答案

这叫连接池,就是为了HTTP Keep-alive。很好。你想要它。如果确实不这样做,请调用 disconnect() 方法。

关于java - URL.openConnection() 第二次返回已经打开的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12612214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com