如何将HttpServletResponse传播到客户端?

时间:2015-02-19 01:34:59

标签: java spring servlets

我们正在开发一个新的Web应用程序来替换我们公司通常使用的旧应用程序。它们最终都将拥有完全相同的API。我们最初想要做的是通过让客户端向新的Web应用程序发送请求来测试新功能,然后让我们的新Web应用程序将他们的请求传播到旧的Web应用程序并将旧的Web应用程序的http响应发送回我们的客户(从客户的角度来看,没有任何改变)。

我想要做的是获取我们从旧的Web应用程序返回的确切的HttpServletResponse对象,并将其发送回新的Web应用程序的客户端。执行此操作的最佳方式是什么?我知道,一旦我可以检索HttpServletResponse,我就可以将它设置为我们在新的Web应用程序的REST控制器中作为我们的函数(API处理程序)的参数,但是我在检索它时遇到了问题。

有没有办法通过Spring的RestTemplate检索HttpServlet响应?

1 个答案:

答案 0 :(得分:0)

您可以使用org.apache.commons.httpclient.HttpClient

它有public int executeMethod(HttpMethod method),您可以在其中定义请求,并在检查状态为成功后

您可以使用所有HttpMethod方法。

InputStream getResponseBodyAsStream()
Header[] getResponseHeaders();

并转到您的回复。喜欢这个

public static void main(String[] args) throws Exception {
    HttpClient client = new HttpClient();
    GetMethod method = new GetMethod("http://The old service url");
    method.addRequestHeader("X-Username", "user");
    method.addRequestHeader("X-Password", "password");
    // Execute the HTTP GET request
    int status = client.executeMethod(method);
    if(status == 200){
        InputStream in = method.getResponseBodyAsStream();
        OutputStream out=the out of your response
        IOUtils.copy(in, out);
        in.close();
        out.flush();
        out.close();
    }
}