上下文共享
协议拦截器可以通过HTTP执行上下文共享信息,例如处理状态,来实现协作。HTTP上下文是一种将属性名对应到属性值得一种结构。HTTP上下文的内部实现通常是HashMap。使用HTTP上下文的主要目的是便于在多种逻辑上相关的组件之间共享信息。HTTP上下文可以用来储存一个或多个连续报文的处理状态。如果同一上下文在多个连续报文中被重复使用,多个逻辑上相关的报文可以参与同一逻辑会话。
HttpProcessor httpproc = HttpProcessorBuilder.create().add(new HttpRequestInterceptor() {
public void process(
HttpRequest request,
HttpContext context) throws HttpException, IOException {
String id = (String) context.getAttribute("session-id");
if (id != null) {
request.addHeader("Session-ID", id);
}
}
})
.build();
HttpCoreContext context = HttpCoreContext.create();
HttpRequest request = new BasicHttpRequest("GET", "/");
httpproc.process(request, context);