[英]Apache camel: set cookies for http4 client
我正在与Apache Camel一起玩耍,在从“琐碎的示例”阶段过渡到“但具有这些令人烦恼的细节”阶段的过程中遇到了一些问题。 至关重要的是,如何进入和显式修改端点。
在这种情况下,我需要为http客户端设置一个身份验证cookie。 我有一个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"
端点设置cookie存储吗?
因此,在进一步研究中,上述方法行之有效(在其他地方却失败了),尽管我仍然不满意使用运行时类型检查来公开HttpClient
的实现,因此,欢迎提供有关如何更好地做到这一点的答案!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.