У меня есть игра с Apache Camel, и у меня есть несколько проблем, переход от стадии «тривиальных примеров» к стадии «но с этими раздражающими деталями». Принципиально важно, как входить и изменять конечные точки явно.Apache camel: установить файлы cookie для клиента http4
В этом случае мне нужно установить файл cookie для http-клиента. У меня есть объект хранилища файлов cookie, но не знаю, как заставить клиента использовать его. Я пробовал использовать HttpClientConfigurer
, но HttpClient
не раскрывает хранилище файлов cookie, и, похоже, он все равно не называется.
Мой текущий код:
class CookieClientConfigurer(cs: CookieStore) extends HttpClientConfigurer {
/**
* Not very nice, relying on a runtime type check. But what can you do?
*/
def configureHttpClient(client: HttpClient) {
client match {
case client: AbstractHttpClient => client.setCookieStore(cs)
}
}
}
И вызывается:
val username = args(0)
val password = args(1)
val context = new DefaultCamelContext
locally {
// First we need to grab some authentication cookie stuff!
val httpClient = new DefaultHttpClient
val post = new HttpPost("https://rt")
val nvps = List(new BasicNameValuePair("username", username), new BasicNameValuePair("password", password))
post.setEntity(new UrlEncodedFormEntity(asJavaList(nvps)))
httpClient.execute(post)
val ccc = new CookieClientConfigurer(httpClient.getCookieStore())
val httpComp = context.getComponent("https4", classOf[HttpComponent])
httpComp.setHttpClientConfigurer(ccc)
}
val routes = new RouteBuilder {
def configure() = {
from("timer://foo?fixedRate=true&delay=0&period=10000")
.to("https4://rt/REST/1.0/ticket/335729/show")
.to("file://test")
}
}
context.addRoutes(routes)
context.start()
System.in.read()
context.stop()
Любая идея, как я установил в магазине печенья для "https4://rt/REST/1.0/ticket/335729/show"
конечной точки?
Имея аналогичную проблему здесь, пока нет решения, но документы для http4 утверждают, что вы должны просто добавить app cookieStore = customInstance в URI – kaqqao