Мне нужно получить файл в память в моем приложении из защищенного веб-сайта. У меня есть URL-адрес файла для захвата, но он не может решить проблему безопасности. Вот код из Cookbook samples page:Secured File загрузить в 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 (выберите любой файл изображения, который вы можете найти в сети), он работает отлично. Однако, если я выберу URL-адрес, который требует пользователя/пароль, не уходите.
Хорошо, сделайте немного больше работы над этим. Кажется, что метод аутентификатора делает работы, но круглым путем. При первом обращении к URL-адресу я получаю ответ 302 с указанием местоположения на сервере входа. Если я получаю доступ к этому местоположению с помощью набора Authenticator, тогда я получаю еще 302 с Cookie и место, установленное на исходный URL. Если я получаю доступ к оригиналу, загрузка выполняется правильно.
Итак, мне нужно немного подражать браузеру, но в итоге все это работает.
Создание этой вики-сообщества, чтобы другие могли добавлять другие методы.
Спасибо!
Я попробую сегодня днем, спасибо! – billjamesdev 2008-12-07 15:11:52
Хорошо, я попробовал, не пошел. Я не думаю, что безопасность не такая основная. Я думаю, что сервер регистрации помещает информацию в cookie или в сеанс для приложения eRoom, к которому я обращаюсь. – billjamesdev 2008-12-08 04:06:42