Netty Установка размера содержимого HTTP-ответа на 0

В целях эксперимента, когда мне нужно удалить определенный контент (аудиоданные), поступающий с YouTube, в ответном сообщении HTTP, я использую приведенный ниже код.

Сейчас я тестирую конкретное видео и знаю размер контента. Запустил некоторый тест без этого кода и зафиксировал переменную размера.

if (contType.equals("text/plain") && contLen > 200000 && contLen < 300000) {
    outputFileName = projRoot + File.separator + folder + File.separator + "v_" + seqNum + "_" + String.valueOf(ranNum);

    log.debug("This is AUDIO data received, and dropping it off");
    response.setHeader("Content-Length", 0);
    response.getContent().clear();
    return true;
}

Однако, когда я запускаю эту программу, я вижу, что журнал печатается; однако на самом деле он не удаляет содержимое. Я вижу, что клиент (браузерный флеш-плеер) по-прежнему может загружать контент, и на этот раз с другим размером. Видео воспроизводится как с изображением, так и со звуком.

Как правильно передать контент до того, как он попадет к клиенту? Я что-то упустил здесь?


person AnilJ    schedule 10.07.2013    source источник
comment
Что вы имеете в виду под спуском? Вы имеете в виду, чтобы ваши данные не отправлялись в браузер? Я вижу, что в этом фрагменте кода ничего не пишется в канал... Ищите вызовы channel.write и модифицируйте то, что там пишется.   -  person Anthony Accioly    schedule 10.07.2013
comment
Правильный. На данный момент в коде данные уже записаны/прикреплены к ответному сообщению HTTP, которое я пытаюсь очистить. Да, я пытаюсь предотвратить попадание данных в браузер. Если вы предлагаете управлять channel.write, это означает, что мы должны сделать это на более низком уровне в прокси (я использую LittleProxy, который реализован поверх netty). Есть ли способ справиться с этим на уровне HTTP/прокси?   -  person AnilJ    schedule 10.07.2013
comment
Почему содержимое, помеченное как text/plain, должно быть аудио? В чем здесь настоящая проблема?   -  person user207421    schedule 10.07.2013
comment
Это сервер YouTube, который отправляет «аудио» с типом контента как text/plain. В моем случае мне нужно отделить аудиоинформацию от видео до того, как оно достигнет клиента/браузера. Обратите внимание, что сервер Youtube отправляет аудио и видео в двух отдельных ответных сообщениях HTTP. В приведенном выше коде я пытаюсь очистить ответное сообщение HTTP, содержащее звук.   -  person AnilJ    schedule 10.07.2013


Ответы (1)


Пытаться:

HttpHeaders.setContentLength(response, 0l);
response.setContent(null); 

Также убедитесь, что ваш браузер не загружает содержимое из локального кеша.

Я не уверен, что вы можете использовать LittleProxy для перехвата и изменения такого ответа... Хотя эта тема предполагает, что вы можете сделать это с помощью HttpFilter (проверьте этот тестовый код для базовой структуры). В противном случае вам придется копаться в исходном коде Little Proxy для дальнейшей настройки.

person Anthony Accioly    schedule 10.07.2013