Tom's Guide > Forum > Programmation > [RESOLU] recuperer un fichier a partir d'une requete http

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

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

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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/creation-pdf.pdf";

URL url=new URL(url0);

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


Message édité par emma13 le 28-11-2007 à 10:09:17
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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...

Répondre à mongos@IDN

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.

Code :
  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 ???

Répondre à emma13

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.

Répondre à emma13

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 :

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


Message édité par Vinz42 le 27-11-2007 à 14:15:04
------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

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 !!

Code :
  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

Répondre à emma13
Tom's Guide > Forum > Programmation > [RESOLU] recuperer un fichier a partir d'une requete http
Aller à :

Il y a 1554 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens