2013-11-20 37 views
0

我有一個小程序可以從網絡中檢索要打印的文件,並且偶爾會遇到問題,它會返回緩存版本的文件,而不是實際發生更改。阻止小程序緩存下載的文件

例如:

URL http = new URL(url +"/"+ m_printfile.get(i)); 
Doc myDoc = new SimpleDoc(http, myFormat, das); 
DocPrintJob job = service.createPrintJob(); 
job.print(myDoc, aset); 

由於我使用SimpleDoc打印的文件,我還沒有找到一種方法來使用URLConnection對象,這是我見過禁用緩存的唯一途徑一份文件。

有沒有辦法做到這一點的URL對象,或者有一種方法,我可以將URLConnection傳遞給SimpleDoc?

回答

1

1)你可以通過URLConnectionSimpleDoc這樣的:

URL http = new URL(url +"/"+ m_printfile.get(i)); 
URLConnection conn = http.openConnection(); 
conn.setUseCaches(false); 
conn.connect(); 
Doc myDoc = new SimpleDoc(conn.getInputStream(), myFormat, das); 
DocPrintJob job = service.createPrintJob(); 
job.print(myDoc, aset); 

2)骯髒的方式,以避免緩存是添加這樣的隨機不相關的數據:

URL http = new URL(url +"/"+ m_printfile.get(i) +"?z="+Math.random()); 

等等,每次看起來都不一樣的網址,所以緩存沒有影響...

P.S.你的第二行似乎很奇怪..(Doc myDoc = new SimpleDoc(http, myFormat, das))。它真的適合你嗎?我的意思是,http不是InputStream的對象..我錯了嗎?

+0

您的評論最終導致我找到了正確的道路。 myFormat var是這樣設置的:myFormat = DocFlavor.URL。***它允許你傳遞一個URL對象。更改爲您的代碼,直到我意識到需要將其更新爲:myFormat = DocFlavor.INPUT_STREAM。*** –