我正在使用Scala开发一个网站抓取应用程序。我要抓取的网站非常依赖于会话,因此在执行任何其他操作之前,我必须先访问网站以获取会话ID。
我通过以下方式获取用于检索会话ID的连接:
url.openConnection().asInstanceOf[HttpURLConnection]
它可以正常工作。返回的HttpURLConnection的“connected”字段是false,当我在其上调用.connect()时,它会变为true。没有问题。
第一个麻烦的迹象出现在我完成连接并调用.disconnect()后。连接字段仍保持为true. 嗯。
因此,我现在已经获得了我的会话ID,并且我要获取页面上的表单。我调用
url.openConnection().asInstanceOf[HttpURLConnection]
和上次一样,实际上是同样的代码,但这一次给我的HttpURLConnection却将.connected字段设置为true!起初我以为它以某种方式再次给了我相同的对象,但不,内存ID是不同的。
因此,当我在连接上调用.setRequestProperty()时,它会因IllegalStateException而崩溃:已经连接。
我是否误解了如何使用HttpURLConnection?
注:Scala 2.9.2,Java 6.0。另外,我调用.openConnection()的URL对象是不同的对象,而不是相同的对象。
谢谢...