2013-11-20 39 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。*** –