我需要從我的應用程序中從安全的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