Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正在将一个客户端的HttpServletRequest复制到另一个客户端的HttpServletResponse的Body_Java_Servlets_Http Request - Fatal编程技术网

Java 正在将一个客户端的HttpServletRequest复制到另一个客户端的HttpServletResponse的Body

Java 正在将一个客户端的HttpServletRequest复制到另一个客户端的HttpServletResponse的Body,java,servlets,http-request,Java,Servlets,Http Request,我需要将client1的HttpServletRequest复制到为client2创建的HttpServletResponse对象。根据HttpRequest有一个resestline,然后是headers,然后是body。 我复制了如下标题: Enumeration<?> headerNames = client1Req.getHeaderNames(); while (headerNames.hasMoreElements()) { String hea

我需要将client1的
HttpServletRequest
复制到为client2创建的
HttpServletResponse
对象。根据
HttpRequest
有一个resestline,然后是headers,然后是body。 我复制了如下标题:

 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);
        }
但是,我也需要复制请求行。如果我尝试在开始时读取输入流,而不是单独读取标题和正文,则返回-1。 没有用于从
HttpServletRequest
读取整个请求行的api。如果我使用
getRequestURL()
getquesrysting()
读取URL,我应该将其放置在ResponseClient2的何处? 在自定义头
REQUESTLINE
中,还是应该将其写入outputstream? 谢谢

编辑:由于将
请求
复制到
响应
在语义上是错误的,因此我决定将
请求
复制到
响应的有效负载或主体。但是,由于
HttpServletRequest
不可序列化,我无法将其写入
response
outputstream
,有没有关于如何实现这一点的建议?
谢谢

我不太明白你在这里想干什么。请求和响应有不同的目的和规格,那么您真正的需求是什么?把一个复制到另一个似乎是错误的,这没有意义。有效请求在HTTP中不是有效响应。Client2位于防火墙后面,防火墙阻止传入请求,但允许传出请求。我必须将client1的请求中继到client2一侧的appserver。由于防火墙的原因,Client1无法直接向appserver发送请求。因此,我将自己的服务器置于防火墙之外,client1向我的服务器发送appserver请求。我的服务器还接收来自Client2的请求,并用client1的请求响应它。我同意请求和响应有完全不同的目的。那我怎么才能达到我想要的呢?听起来你想写某种代理?
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");
        }