J'ai besoin d'obtenir un fichier en mémoire dans mon application à partir d'un site Web sécurisé. J'ai l'URL du fichier à capturer, mais je n'arrive pas à résoudre le problème de sécurité. Voici le code de la Cookbook samples page:Téléchargement de fichier sécurisé dans Groovy
def download(address)
{
def file = new FileOutputStream(address.tokenize("/")[-1])
def out = new BufferedOutputStream(file)
out << new URL(address).openStream()
out.close()
}
et voici ma « mémoire » version de la même fonction qui renvoie un tableau d'octets du contenu du fichier:
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()
}
Lorsque je tente cette contre un non garanti URL (choisissez n'importe quel fichier image que vous pouvez trouver sur le net), cela fonctionne très bien. Cependant, si je choisis une URL qui nécessite un utilisateur/mot de passe, ne partez pas.
Très bien, j'ai fait un peu plus de travail là-dessus. Il semble que la méthode Authenticator fonctionne, mais d'une manière ronde. La première fois que j'accède à l'URL, j'obtiens une réponse 302 avec un emplacement à un serveur de connexion. Si j'accède à cet emplacement avec un ensemble Authenticator, alors je reçois un autre 302 avec un cookie et l'emplacement est redéfini sur l'URL d'origine. Si j'accède alors à l'original, le téléchargement se déroule correctement. Donc, je dois imiter un navigateur un peu, mais finalement tout cela fonctionne. En faire un wiki communautaire, afin que d'autres puissent ajouter d'autres méthodes.
Merci!
Je suis juste tombé sur ceci aujourd'hui, et cela m'a vraiment aidé. Merci. – Robert
Je vais marquer cela comme la meilleure réponse, car ce n'est pas juste un changement d'URL facile. Cela n'a pas fonctionné pour moi plus pour la configuration de SiteMinder de ma compagnie que pour la solution étant incomplète. – billjamesdev