2013-07-10 1 views
0

HTTP 응답 메시지에서 YouTube의 특정 콘텐츠 (오디오 데이터)를 삭제해야하는 실험 목적으로 아래 코드를 사용하고 있습니다.Netty HTTP 내용 크기를 0으로 설정

지금은 특정 비디오로 테스트 중이며 내용의 크기를 알고 있습니다. 이 코드없이 몇 가지 테스트를 실행하고 크기 변수를 캡처했습니다.

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; 
} 

그러나이 프로그램을 실행할 때 로그가 인쇄되는 것을 볼 수 있습니다. 그러나 실제로 콘텐츠를 삭제하지는 않습니다. 클라이언트 (브라우저 플래시 플레이어)가 콘텐츠를 다운로드 할 수 있으며 이번에는 다른 크기로 볼 수 있습니다. 비디오는 비주얼과 오디오로 재생됩니다.

콘텐츠가 클라이언트에 도달하기 전에 콘텐츠를 삭제하는 올바른 방법은 무엇입니까? 나는 여기서 무엇인가 놓치고 있니?

+0

"드롭 오프"란 무엇을 의미합니까? 데이터가 브라우저로 전송되는 것을 막으려는 것입니까? 이 코드 조각에 채널에 아무것도 쓰여져 있지 않다는 것을 알았습니다 ...'channel.write'에 대한 호출을 찾고 거기에 쓰여지는 것을 수정하십시오. –

+0

수정하십시오. 코드의이 시점에서 데이터는 이미 HTTP 응답 메시지에 쓰거나 첨부되어 있습니다. 예, 데이터가 브라우저에 도달하지 못하게하려고합니다. channel.write를 제어 할 것을 제안하면 프록시에서 하위 수준에서해야한다는 것을 의미합니다 (NetPro를 기반으로 구현 된 LittleProxy를 사용하고 있습니다). HTTP/프록시 수준에서이를 처리 할 수있는 방법이 있습니까? – AnilJ

+0

텍스트/일반으로 표시된 콘텐츠가 오디오일까요? 여기 * 진짜 * 문제는 무엇입니까? – EJP

답변

1

시도 :

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

는 또한 브라우저가 로컬 캐시에서 내용을로드하지 않아야합니다.

LittleProxy를 사용하여 응답을 가로 채고 변경할 수 있는지 확신 할 수 없습니다 ... this thread은 HttpFilter (기본 구조에 대한 this 테스트 코드 확인)를 사용하여 그렇게 할 수 있다고 제안합니다. 그렇지 않으면 추가 사용자 정의를 위해 Little Proxy source code을 파헤쳐 야합니다.