Java 如何从筛选器重定向到其他主机?

Java 如何从筛选器重定向到其他主机?,java,servlets,redirect,httpresponse,servlet-filters,Java,Servlets,Redirect,Httpresponse,Servlet Filters,如何将请求从筛选器转发到另一个URL并返回结果 我正在使用Filter和HttpClient.execute()方法转发请求。那条路对吗 代码如下: public void doFilter(ServletRequest req, ServletResponse response, FilterChain chain) ... HttpRequestBase method = null; URI uri = null; if (isPost) { method = new HttpPos

如何将请求从筛选器转发到另一个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);
public void doFilter(ServletRequest-req、ServletResponse-response、FilterChain-chain)
...
HttpRequestBase方法=null;
URI=null;
如果(isPost){
方法=新的HttpPost();
}否则{
方法=新的HttpGet();
}
uri=新uri(newUrl);
枚举headerNames=request.getHeaderNames();
while(headerNames.hasMoreElements()){
字符串头=headerNames.nextElement();
setHeader方法(header,request.getHeader方法(header));
}
方法setURI(uri);
HttpResponse downstreamResponse=httpClient.execute(方法);
ByteArrayOutputStream bas=新的ByteArrayOutputStream(2048);
downstreamResponse.getEntity().writeTo(BAS);
OutputStream responseStream=response.getOutputStream();
responseStream.write(响应字节);
在您的

doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) 
您将得到一个
ServletResponse

HttpServletResponse httpResponse = (HttpServletResponse) res;
httpResponse.sendRedirect("/login.jsp");
因此,您可以将其强制转换为
HttpServletResponse

HttpServletResponse httpResponse = (HttpServletResponse) res;
httpResponse.sendRedirect("/login.jsp");

我在问题中添加了代码。问题是重定向到其他主机。请求是SOAP请求。所以它不是转发,而是记录?不是。问题是我需要根据SOAP消息中的某些条件将请求重定向到其他url。所以我使用了filter.sounds在架构上有点不可靠/缓慢