【发布时间】:2014-04-26 22:48:36
【问题描述】:
如何将请求从过滤器转发到另一个 URL 并返回结果?
我正在使用Filter 和HttpClient.execute() 方法来转发请求。这样的方式对吗?
代码如下:
public void doFilter(ServletRequest req, ServletResponse response, FilterChain chain)
...
HttpRequestBase method = null;
URI uri = null;
if (isPost) {
method = new HttpPost();
} else {
method = new HttpGet();
}
uri = new URI(newUrl);
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String header = headerNames.nextElement();
method.setHeader(header, request.getHeader(header));
}
method.setURI(uri);
HttpResponse downstreamResponse = httpClient.execute(method);
ByteArrayOutputStream baos = new ByteArrayOutputStream(2048);
downstreamResponse.getEntity().writeTo(baos);
OutputStream responseStream = response.getOutputStream();
responseStream.write(responseBytes);
【问题讨论】:
标签: java servlets redirect httpresponse servlet-filters