我需要将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}}上写出,有关如何实现这一目标的任何建议吗?
谢谢