Se connecter / S'enregistrer
Votre question

[RESOLU] recuperer un fichier a partir d'une requete http

Tags :
  • string
  • Programmation
Dernière réponse : dans Programmation
20 Novembre 2007 18:27:02

bonjour,
alors je vous expose mon probleme :

j'ai une methode en java ou je recupere une url sous forme de String et je veux recuperer le fichierqui s'ouvre en ouvrant l'url (juste comme exemple):

String url0 ="http://aune.lpl.univ-aix.fr/lpl/ressources/techinfo/cre...";

URL url=new URL(url0);

et donc je veux recuperer le fichier PDF associé.
Si vous avez des idees ...
merci.
emma

Autres pages sur : resolu recuperer fichier partir requete http

20 Novembre 2007 22:11:35

Je suppose que tu veux parler d'applet java. Tu peux toujours essayer de voir du côté de la gestion des données gràce aux flux.

En gros tu ouvres le fichier, tu lis ligne par ligne et tu le retranscrit. Si j'ai bien compris ce que tu veux faire...
21 Novembre 2007 09:54:38

oui normalement, alors j'ai trouvé un code qui devait faire ça !!
d'apres les commentaires que j'ai vu, ça marche , mais chez moi ça ne fonctionne pas, il me dit toujours que mon fichier est null, et ça avec pluieurs exemples differents.

  1. public void getFile(URL u) throws IOException {
  2. URLConnection uc = u.openConnection();
  3. String FileType = uc.getContentType();
  4. System.out.println("fichier:= "+FileType);
  5. int FileLength = uc.getContentLength();
  6. System.out.println("taille fichier:= "+FileLength);
  7. if (FileLength == -1) {
  8. throw new IOException("Fichier non valide.");
  9. }
  10. InputStream in = uc.getInputStream();
  11. String FileName = u.getFile();
  12. FileName = FileName.substring(FileName.lastIndexOf('/') + 1);
  13. FileOutputStream WritenFile = new FileOutputStream(FileName);
  14. byte[]buff = new byte[1024];
  15. int l = in.read(buff);
  16. while(l>0)
  17. {
  18. WritenFile.write(buff, 0, l);
  19. l = in.read(buff);
  20. }
  21. WritenFile.flush();
  22. WritenFile.close();
  23. }


la je ne vois pas ce qu'il faut changer ???
Contenus similaires
27 Novembre 2007 10:52:30

bon ben , la methode est correcte, si j'utilise une adresse interne, le fichier est bien telechargé, c'est un probleme de proxy, mais je ne sais pas dutout comment m'y prendre ni quoi rajouter dans mon code.
Merci,
Emma.
27 Novembre 2007 13:58:12

un problème de proxy ?
tu as un proxy chez toi ?

quelle ligne provoque le nullpointer ?
EDIT :

Tiens, si tu as vraiment un problème de proxy :

  1. package test;
  2.  
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.net.MalformedURLException;
  7. import java.net.URL;
  8. import java.net.URLConnection;
  9.  
  10. import sun.misc.BASE64Encoder;
  11.  
  12. public class Test {
  13. public static void getFile(URL u) throws IOException {
  14. URLConnection uc = u.openConnection();
  15. // TODO : renseigne le user / password ici
  16. String password = "user:password";
  17. BASE64Encoder enc = new BASE64Encoder();
  18.  
  19. String encodedPassword = enc.encode(password.getBytes());
  20. uc.setRequestProperty( "Proxy-Authorization", "Basic " + encodedPassword );
  21.  
  22. String FileType = uc.getContentType();
  23. System.out.println("fichier:= "+FileType);
  24. int FileLength = uc.getContentLength();
  25. System.out.println("taille fichier:= "+FileLength);
  26. if (FileLength == -1) {
  27. throw new IOException("Fichier non valide.");
  28. }
  29. InputStream in = uc.getInputStream();
  30. String FileName = u.getFile();
  31. FileName = FileName.substring(FileName.lastIndexOf('/') + 1);
  32. FileOutputStream WritenFile = new FileOutputStream(FileName);
  33. byte[]buff = new byte[1024];
  34. int l = in.read(buff);
  35. while(l>0)
  36. {
  37. WritenFile.write(buff, 0, l);
  38. l = in.read(buff);
  39. }
  40. WritenFile.flush();
  41. WritenFile.close();
  42. }
  43. public static void main(String[] args) {
  44. System.getProperties().put( "proxySet", "true" );
  45. // TODO : met le nom de la machine proxy dans le 2eme paramètre
  46. System.getProperties().put( "proxyHost", "nom de la machine servant de proxy" );
  47. // TODO : met le port du proxy dans le 2eme paramètre
  48. System.getProperties().put( "proxyPort", "port de ton proxy" );
  49. try {
  50. getFile(new URL("<a href="http://java.sun.com/j2se/1.4.2/docs/api/java/io/File.html" rel="nofollow" target="_blank">http://java.sun.com/j2se/1.4.2/docs/api/java/io/File.ht...</a>"));
  51. } catch (MalformedURLException e) {
  52. // TODO Auto-generated catch block
  53. e.printStackTrace();
  54. } catch (IOException e) {
  55. // TODO Auto-generated catch block
  56. e.printStackTrace();
  57. }
  58.  
  59. }
  60.  
  61. }
27 Novembre 2007 14:55:01

oui merci beaucoup ...
j'ai pas utilisé la meme methode que toi pour le mot de passe et le username (j'avoue que ça m'a parait bien compliqué dès que je vois Base64 loll).
j'ai rajouté ce bloc au début de ma fonction, et ça marche nikel !!

  1. System.getProperties().put("proxySet","true");
  2. System.getProperties().put("http.proxyHost", "mon adresse proxy");
  3. System.getProperties().put("http.proxyPort", "8080");
  4. Authenticator.setDefault(new Authenticator(){
  5. protected PasswordAuthentication getPasswordAuthentication() {
  6. return new PasswordAuthentication("user", "password".toCharArray());
  7. }
  8. });


merci encore
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS