首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache camel:为http4客户端设置cookies

Apache camel:为http4客户端设置cookies
EN

Stack Overflow用户
提问于 2013-06-13 18:32:39
回答 1查看 1.9K关注 0票数 1

我正在使用Apache Camel,在从“微不足道的例子”阶段过渡到“但具有这些恼人的细节”阶段时,遇到了一些问题。至关重要的是,如何进入并显式修改端点。

在这种情况下,我需要为http客户端设置一个auth cookie。我有一个cookie存储对象,但不知道如何强制客户端使用它。我尝试过使用HttpClientConfigurer,但HttpClient不公开cookie存储,而且似乎也不会调用它。

我当前的代码:

代码语言:javascript
复制
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)
    }
  }
}

并通过以下方式调用:

代码语言:javascript
复制
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"端点设置cookie存储区吗?

EN

回答 1

Stack Overflow用户

发布于 2013-06-13 22:09:34

因此,在进一步的研究中,上面的方法是有效的(它在其他地方失败了),尽管我仍然不喜欢使用运行时类型检查来公开HttpClient的实现,所以非常欢迎关于如何做得更好的答案!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17084866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档