将一个客户端的HttpServletRequest复制到另一个客户端的bodyof HttpServletResponse

时间:2015-04-24 06:26:09

标签: java servlets http-request

我需要将client1的HttpServletRequest原样复制到为client2创建的HttpServletResponse对象。根据{{​​3}} HttpRequest有一个ResuestLine,然后是标题,然后是正文。 我复制了这样的标题:

 Enumeration<?> headerNames = client1Req.getHeaderNames();
    while (headerNames.hasMoreElements()) {
        String headerName = (String) headerNames.nextElement();

        Enumeration<?> headers = client1Req.getHeaders(headerName);
        while (headers.hasMoreElements()) {
            String headerValue = (String) headers.nextElement();
            responseToClient2.addHeader(headerName, headerValue);
            responseToClient2.setHeader(headerName, headerValue);
            System.out.println("headername : "  + headerName + "value : " + headerValue);
        }

和这样的身体:

input = clientReq.getInputStream();
        output = responseToRIC.getOutputStream();
        if((len=input.available()) > 0){
            len = input.read(outputByte);
            System.out.println("len : "+len);
            output.write(outputByte);
            output.flush();
        }   
        else{
            System.out.println("no body");
        }

但是,我也需要复制请求行。如果我尝试在开头而不是分别读取标题和主体时读取输入流,则返回-1。 从HttpServletRequest读取整个请求行没有api。如果我使用getRequestURL()getQuesrystring()阅读网址,我应该将其放在responseToClient2中? 在自定义标头REQUESTLINE中还是应该在输出流上写入? 感谢

编辑:因为将request复制到response在语义上是错误的,所以我决定将request复制到response的有效负载或正文。但是,由于HttpServletRequest不可序列化,我无法在outputstream的{​​{1}}上写出,有关如何实现这一目标的任何建议吗? 谢谢

0 个答案:

没有答案