我需要从我的应用程序中从安全的Web位置获取文件到内存中。我有要捕获的文件的URL,但似乎无法解决安全问题。下面是来自Cookbook samples page代码:Groovy安全文件下载
def download(address)
{
def file = new FileOutputStream(address.tokenize("/")[-1])
def out = new BufferedOutputStream(file)
out << new URL(address).openStream()
out.close()
}
,这里是应返回的文件内容的字节数组相同功能的我的“记忆”的版本:
def downloadIntoMem(address)
{ // btw, how frickin powerful is Groovy to do this in 3 lines (or less)
def out = new ByteArrayOutputStream()
out << new URL(address).openStream()
out.toByteArray()
}
当我尝试这对不安全URL(选择你可以在网上找到的任何图像文件),它工作得很好。但是,如果我选择需要用户/密码的网址,则不可以。
好的,在这方面做了更多的工作。看起来Authenticator方法确实工作,但在一个圆满的方式。我第一次访问这个URL时,我得到了一个302位置的登录服务器响应。如果我使用身份验证器设置访问该位置,那么我会获得另一个具有Cookie的302,并且该位置将恢复为原始网址。如果我然后访问原件,则正确下载。
所以,我不得不模仿一个浏览器,但最终它的一切工作。
使这个社区维基,所以其他人可以添加其他方法。
谢谢!
今天下午我会试一试,谢谢! – billjamesdev 2008-12-07 15:11:52
好吧,我试过了,不行。我猜想安全性不是那么基本。我认为登录服务器会将信息放入Cookie或正在访问的eRoom应用程序的会话中。 – billjamesdev 2008-12-08 04:06:42