0

我在这里按照说明尝试:http: //www.innovation.ch/java/HTTPClient/advanced_info.html

但是,如果我使用的是 HTTP Builder,则以下几行

System.setProperty("HTTPClient.cookies.save","true")
System.setProperty("HTTPClient.cookies.jar","/home/misha/.httpclient_cookies")

似乎没有创建文件:

~/.httpclient_cookies

我会像往常一样发布解决方案。

:)

米莎

4

2 回答 2

0

谢谢你。我选择了一个更hacker的解决方案:

#!/usr/bin/env groovy

import com.gargoylesoftware.htmlunit.WebClient

import static groovyx.net.http.Method.GET
import static groovyx.net.http.ContentType.TEXT

import java.io.File

import org.apache.http.impl.cookie.BasicClientCookie

class HTTPBuilder extends groovyx.net.http.HTTPBuilder {

...

  /**
   * Load cookies from specified file
   */
  def loadCookies(file) {
    file.withObjectInputStream { ois->
      ois.readObject().each { cookieMap->
    def cookie=new BasicClientCookie(cookieMap.name,cookieMap.value)
    cookieMap.remove("name")
    cookieMap.remove("value")
    cookieMap.entrySet().each { entry->
      cookie."${entry.key}"=entry.value
    }
    client.cookieStore.addCookie(cookie)
    println cookie
      }
    }
  }

  /**
   * Save cookies to specified file
   */
  def saveCookies(file) {
    def cookieMaps=new ArrayList(new LinkedHashMap())
    client.cookieStore.getCookies().each { cookie->
      def cookieMap=[:]
      cookieMap.version=cookie.version
      cookieMap.name=cookie.name
      cookieMap.value=cookie.value
      cookieMap.domain=cookie.domain
      cookieMap.path=cookie.path
      cookieMap.expiryDate=cookie.expiryDate
      cookieMaps.add(cookieMap)
      println cookie
    }
    file.withObjectOutputStream { oos->
      oos.writeObject(cookieMaps)
    }
  }

...

}
于 2010-06-10T00:12:09.957 回答
0

您链接的 HTTPClient 与与 groovy HTTPBuilder 捆绑的 apache HTTPClient 不同。查看此文档以使用 apache HTTPClient 持久化 cookie。

于 2010-06-09T22:40:16.373 回答