我正在尝试让 Java ICAP 服务器与充当 ICAP 客户端的蓝色外套设备交互。我正在使用的 ICAP 服务器在这里: icap。基本上我一直在工作,现在我被困在为什么在服务器端我没有收到文件。下面是几行代码,显示了我最近所处的位置。显然大部分代码都被省略了。
IcapRequest request = (IcapRequest)e.getMessage();
ChannelBuffer buffer = null;
buffer = request.getHttpRequest().getContent();
if(buffer != null) {
System.out.println("Buffer = " + buffer.toString(Charset.defaultCharset()));
}
try {
FileOutputStream fout= new FileOutputStream(testfile);
while (request.getHttpResponse().getContent().readable()) {
byte[] bb = new byte[request.getHttpResponse().getContent().readableBytes()];
request.getHttpResponse().getContent().readBytes(bb);
fout.write(bb);
}
基本上,我看到使用wireshark 并且在我的服务器打印语句上我得到了文件名、html 请求等。但是当它是一个大文件时,我没有得到所有的内容。如果它是一个小的 .txt 文件,我可以获取内容并将 txt 文件和所有内容保存到我的服务器端磁盘。如果它是任何类型的 .docx 文件,大小可能约为 10K 或更大,则似乎只有一个 ICAP 客户端数据包,其内容使用 PSH 方法,但没有其他内容,因此如果我尝试将文件保存到磁盘上的服务器我没有获得所有内容,因此文件基本上已损坏。所以在这一点上,我不确定为什么我不能让我的 ICAP 服务器保存从 blue coat 设备发送的 .docx 文件,因为我更倾向于服务器端的问题。任何建议将不胜感激。