Comment serais-je capable de gérer les téléchargements en utilisant HttpResponse en Java? J'ai fait une requête HttpGet à un site spécifique - le site renvoie le fichier à télécharger. Comment puis-je gérer ce téléchargement? InputStream ne semble pas être capable de le gérer (ou peut-être que je l'utilise dans le mauvais sens.)Gestion des téléchargements en Java
Répondre
En supposant que vous êtes en train de parler de HttpClient, voici un SSCCE:
package com.stackoverflow.q2633002;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
public class Test {
public static void main(String... args) throws IOException {
System.out.println("Connecting...");
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet("http://apache.cyberuse.com/httpcomponents/httpclient/binary/httpcomponents-client-4.0.1-bin.zip");
HttpResponse response = client.execute(get);
InputStream input = null;
OutputStream output = null;
byte[] buffer = new byte[1024];
try {
System.out.println("Downloading file...");
input = response.getEntity().getContent();
output = new FileOutputStream("/tmp/httpcomponents-client-4.0.1-bin.zip");
for (int length; (length = input.read(buffer)) > 0;) {
output.write(buffer, 0, length);
}
System.out.println("File successfully downloaded!");
} finally {
if (output != null) try { output.close(); } catch (IOException logOrIgnore) {}
if (input != null) try { input.close(); } catch (IOException logOrIgnore) {}
}
}
}
fonctionne très bien ici. Votre problème se situe ailleurs.
J'ai ajouté le type de contenu à l'en-tête (Application/octet-stream) et en utilisant la même méthode, cela semblait faire l'affaire. – Tereno
En général, lorsque vous voulez que le navigateur affiche la boîte de dialogue de téléchargement d'un fichier à télécharger, vous devez définissez le contenu entrant inputstream
directement dans l'objet de réponse steam et définissez le type de contenu de réponse (objet HttpServletResponse
) sur le type de fichier approprié.
dire,
response.setContentType(.. relevant content type)
Type de contenu peut être application/pdf
pour les fichiers PDF à titre d'exemple.
Si le navigateur a un plugin pour montrer le fichier approprié dans la fenêtre du navigateur, le fichier s'ouvrira et l'utilisateur pourra alors enregistrer, sinon le navigateur affichera la boîte de téléchargement.
Ouvrir un flux et envoyer le fichier:
try {
FileInputStream is = new FileInputStream(_backupDirectory + filename);
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[65536];
int numRead;
while ((numRead = is.read(buffer, 0, buffer.length)) != -1) {
os.write(buffer, 0, numRead);
}
os.close();
is.close();
}
catch (FileNotFoundException fnfe) {
System.out.println("File " + filename + " not found");
}
- 1. Gestion des téléchargements en double
- 2. Gestion des cookies en Java
- 3. Gestion des événements en Java
- 4. Gestion des exceptions en Java
- 5. Gestion de N téléchargements HTTP simultanés
- 6. Gestion des téléchargements de fichiers dans App Engine (python)
- 7. Gestion des fichiers java
- 8. Gestion des dépendances de déploiement en Java
- 9. Gestion des exceptions Runtime en Java
- 10. Gestion des exceptions Java
- 11. flush() gestion des fichiers java
- 12. Plusieurs téléchargements en flex
- 13. Importants téléchargements de fichiers avec l'applet Java
- 14. téléchargements parallèles en PHP
- 15. Sécurisation des téléchargements d'images anonymes
- 16. Modèle de prêt/gestion automatique des ressources en Java
- 17. Gestion des dépassements de délai réseau en Java
- 18. Pièges de la gestion des événements en Java
- 19. J'apprends la gestion des exceptions en Java (essentiellement dans l'héritage)
- 20. Connaissez-vous un projet de gestion des utilisateurs en Java?
- 21. Augmentation de la gestion des événements en Java
- 22. Gestion des ressources indolore dans Java
- 23. gestion des exceptions java dans l'héritage
- 24. Java: Gestion automatique des cookies dans HttpClient?
- 25. Java Gestion des exceptions dans les "événements"
- 26. django gestion des téléchargements de fichiers - cible différente du dossier multimédia
- 27. Gestion de fichier Excel en Java
- 28. Java gestion des exceptions - exception personnalisée
- 29. Gestion des ressources de chaînes Java
- 30. Gestion des instances en Python
De quelle API/bibliothèque parlez-vous? [Apache HttpComponents HttpClient v4] (http://hc.apache.org/httpcomponents-client/index.html)? Si vous ne connaissez pas, veuillez mentionner le nom du paquet des classes 'HttpResponse' et' HttpGet' dont vous parlez et de préférence publier un [SSCCE] (http://sscce.org) afin que nous puissions détecter votre erreur . – BalusC
En effet, j'utilise Apache HttpComponents. La réponse que vous avez posté semble être ce que je cherche. Cependant, serait-il possible de stocker toutes les entrées dans une chaîne par rapport à un fichier réel? Ma conversion du flux d'entrée en méthode string utilise un lecteur tamponné mais cela me donne null. – Tereno