【发布时间】:2012-09-27 00:03:13
【问题描述】:
我正在使用 Scala 开发网站抓取应用程序。我正在抓取的网站主要面向会话,因此我必须访问该网站一次以获取会话 ID,然后才能执行其他任何操作。
我得到这样的连接来检索会话 ID:
url.openConnection().asInstanceOf[HttpURLConnection]
它工作正常。返回的 HttpURLConnection 的 .connected 字段为假,当我对其调用 .connect() 时,它变为真。没问题。
当我完成连接并在其上调用 .disconnect() 时,会出现第一个问题。 .connected 字段保持不变。嗯。
所以现在我已经获得了我的会话 ID,并且我去获取具有我想要的表单的页面。我打电话
url.openConnection().asInstanceOf[HttpURLConnection]
再一次,就像上次一样——实际上是相同的代码——除了这次它给我的 HttpURLConnection 将 .connected 字段设置为 true!一开始我以为它给了我之前给我的同一个对象,但不,内存ID不同。
当然,现在当我在连接上调用 .setRequestProperty() 时,它会出现 IllegalStateException: Already connected。
我是否误解了如何使用 HttpURLConnection?
注释:Scala 2.9.2,Java 6.0。另外,我调用 .openConnection() 的 URL 对象是不同的对象,不一样。
谢谢...
【问题讨论】:
-
我也有同样的问题。奇怪的是,它似乎发生在某些虚拟机上而不是其他虚拟机上——我还没有发现一种模式。你找到解决办法了吗?
标签: java scala httpurlconnection