Я пытаюсь заставить сервер Java ICAP взаимодействовать с устройством Blue Coat, которое действует как клиент 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, размер которого может быть около 10 КБ или больше, то, похоже, будет только один клиентский пакет ICAP с содержимым, использующим метод PSH, но без другого содержимого, поэтому, если я пытаюсь сохранить файл на своем сервере на дискеЯ не получаю весь контент, поэтому файл в основном поврежден.Поэтому на данный момент я не уверен, почему я не могу заставить свой ICAP-сервер сохранить файл .docx, отправленный с устройства Blue Coat, поскольку я больше склоняюсь к проблеме на стороне сервера.Любой совет будет принята с благодарностью.