Как сохранить куки в HTTP Builder 0.5.0 / HTTPClient - PullRequest
0 голосов
/ 10 июня 2010

Я пытаюсь выполнить следующие инструкции: 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

Я опубликую решение, как всегда, когда это выясним.

:)

Миша

Ответы [ 2 ]

0 голосов
/ 10 июня 2010

Спасибо. Я выбрал более хакерское решение:

#!/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)
    }
  }

...

}
0 голосов
/ 10 июня 2010

HTTPClient, который вы связали, отличается от apache HTTPClient, который поставляется в комплекте с отличным HTTPBuilder. Взгляните на эту документацию для постоянных файлов cookie с Apache HTTPClient.

...