我已经在这个项目上工作了两个多星期。我觉得自己就快要走了。到目前为止,我已经能够从Blue Coat代理接收ICAP响应修改请求。到目前为止,我可以将文件“ text或.docx”带离测试为止。我能够验证和清除文件。但是,现在我已经准备好将所有数据发送回ChannelBuffer或Byte Array中的用户“修改后的文件”。但是,我不了解如何设置要发送回的消息,因为我没有找到任何代码示例,文档也很薄,我的Java经验也很低。
Encapsulated shell = message.getEncapsulatedHeader();
//shell.
// for (Map.Entry<String,String> s : headerlist) {
// System.out.println(s.getKey() + s.getValue());
//Encapsulated shell()
//}
message.getHttpResponse().setContent(cBuffer);
IcapResponse response = new DefaultIcapResponse(IcapVersion.ICAP_1_0,IcapResponseStatus.OK);
response.setHeader("Host", "192.168.1.48");
//response.setHttpResponse((HttpRequest)message);
//response.setHttpResponse(message.getHttpResponse()); //*** THIS DOES NOT WORK (OR AT LEAST IT makes client say no server response"
//response.addHeader(IcapHeaders.Names.ISTAG,"SimpleServer-version-1.0");
//response.setEncapsulatedHeader(shell);
//response.setHttpRequest(message.getHttpRequest());
//response.setBody(IcapMessageElementEnum.RESBODY);
//response.setContent(cBuffer); //cBuffer contains cleansed File but I am not sure what to try
//response.
System.out.println("******** Response Content: " + response + "********");
ctx.getChannel().write(response);
到目前为止,还没有文件将其返回给用户。同样,从wireshark看来,还没有文件内容被发送。无论我如何尝试,消息正文几乎都为空。我的下一步可能是构建一个全新的HtmlResponse消息,看看是否可行,但我觉得它应该没有那么复杂。有任何想法吗?预先感谢。
乔