2013-07-10 60 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; 
} 

但是,當我運行這個程序時,我看到打印的日誌;但是,它並沒有真正刪除內容。我看到客戶端(瀏覽器Flash Player)仍然能夠下載內容,並且這次的大小不同。視頻播放視覺和音頻。

在內容到達客戶端之前刪除內容的正確方法是什麼?我在這裏錯過了什麼?

+0

「脫落」是什麼意思?你的意思是阻止你的數據被髮送到瀏覽器?在這段代碼中我看不到任何內容正在寫入頻道......尋找對「channel.write」的調用並修改正在寫入的內容。 –

+0

正確。在代碼的這一點上,數據已經寫入/附加到HTTP響應消息,我試圖清除它。是的,我試圖阻止數據到達瀏覽器。如果你建議控制channel.write,這意味着我們必須在代理的較低層次上執行它(我使用的是LittleProxy,它在netty之上實現)。有沒有辦法在HTTP /代理級別處理這個問題? – AnilJ

+0

爲什麼標記爲純文本/純文本的內容是音頻?這裏真正的*問題是什麼? – EJP

回答

1

嘗試:

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

另外,還要確保你的瀏覽器不加載從本地緩存中的內容。

我不確定您是否可以使用LittleProxy攔截並更改這樣的響應......雖然this thread建議您可以使用HttpFilter(檢查this測試代碼的基本結構)。否則,你將不得不挖掘小代理source code進一步定製。

相關問題