get url from Jersey WriterInterceptor



我知道有一种方法可以在Jersey的ContainerRequestFilter类中获取URL。

有没有办法从aroundWriteTo方法中的writerInterceptor获取URL?

@Provider
public class RequestClientWriterInterceptor implements WriterInterceptor {
@Override
public void aroundWriteTo(WriterInterceptorContext context) 
throws IOException, WebApplicationException {
context.getOutputStream()
.write(("Message added in the writer interceptor in the client side").getBytes());
context.proceed();
}
}

您只需将UriInfo注入拦截器即可。您可以从这个对象中获得所需的所有与URI相关的好东西。

@Provider
public class RequestClientWriterInterceptor implements WriterInterceptor {
@Context
private UriInfo uriInfo;
}

您不必担心任何竞争条件或诸如此类的问题,因为将注入线程本地代理,而不是实际对象。

您也可以以新的标头名称发送URL,然后使用getHeaders获取特定的标头:

MultivaluedMap<String,Object> headers = context.getHeaders();

我通过从上下文属性中检索HttpChannel,然后从HttpChannel中获取请求来获得URL。请参阅以下内容。。。。

@Override
public void aroundWriteTo(WriterInterceptorContext context) 
throws IOException, WebApplicationException {
HttpChannel httpChannel = (HttpChannel) context.getProperty(HttpChannel.class.getName());
String url = httpChannel.getRequest().getOriginalURI());
context.getOutputStream()
.write(("Message added in the writer interceptor in the client side").getBytes());
context.proceed();
}

相关内容

  • 没有找到相关文章

最新更新