Menu

Erreur lors de téléchargement de fichier : does not support js [Résolu]

electroking 191 Messages postés dimanche 14 septembre 2014Date d'inscription 23 avril 2018 Dernière intervention - 16 juil. 2017 à 18:35 - Dernière réponse : electroking 191 Messages postés dimanche 14 septembre 2014Date d'inscription 23 avril 2018 Dernière intervention
- 18 juil. 2017 à 10:29
Bonjour,

Dans un de mes programmes je souhaite télécharger un fichier depuis un site en lige (donc je suis le développeur) voici le code que j'utilise :

public void dl() throws IOException {
  URL test = new URL("http://mondomaine/monfichier.ext");
  
  URLConnection uc = test.openConnection();
  String FileType = uc.getContentType();
  int FileLenght = uc.getContentLength();
  if (FileLenght == -1) {
   throw new IOException("Fichier non valide.");
  }
  InputStream in = uc.getInputStream();
  String FileName = test.getFile();
  FileName = FileName.substring(FileName.lastIndexOf('/') + 1);
  FileOutputStream WritenFile = new FileOutputStream(FileName);
  byte[]buff = new byte[1024];
  int l = in.read(buff);
  while(l>0)
  {
  WritenFile.write(buff, 0, l);
  l = in.read(buff);
  }
  WritenFile.flush();
  WritenFile.close();
 }


le seul problème c'est que cet algo agit comme si il visitait la page et qu'il lisait le code source de cette page web, cette solution m'aurait parfaitement plu, seulement mon programme ne supporte pas le javascript et donc mon fichier contient constamment ceci :

<html><body><script type="text/javascript" src="/aes.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("7a16ee759ae8d08fa1bc7b4e52860371");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; location.href="http://undb.byethost7.com/test.php?i=1";</script><noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript></body></html>


Auriez vous une idée pour éviter cette erreur javascript ? Ou un autre moyen de télécharger un fichier en ligne ?

Cordialement,
Faure Lucas.
Afficher la suite 

9 réponses

Répondre au sujet
KX 15369 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 22 avril 2018 Dernière intervention - 16 juil. 2017 à 19:25
0
Utile
8
Bonjour,

Déjà, on voit tout de suite le copier-coller dans ton code... le problème c'est que ce code là il a 10 ans !!! (voir par exemple ici, en 2007)

Il y a quand même plus simple avec les versions plus récentes de Java...

public static void download(URL src, File dest) throws IOException {
    try (PrintWriter out = new PrintWriter(dest);
            Scanner in = new Scanner(src.openStream())) {
        while (in.hasNextLine())
            out.println(in.nextLine());
    }
}

Exemple :
download(new URL("https://www.google.fr"), new File("C:/google.html"));

Quant à ton problème, ce n'en est pas vraiment un, tu télécharges une page web, elle vient telle qu'elle est avec tout son contenu, donc avec son code JavaScript et son CSS s'il y en a...
Donc il faut faire avec ce contenu car le site ne t'en fournira pas d'autre, il fournit un code compréhensible par un navigateur web, à toi de te comporter comme un navigateur et de traiter ces données, quitte à en ignorer une partie.
electroking 191 Messages postés dimanche 14 septembre 2014Date d'inscription 23 avril 2018 Dernière intervention - 17 juil. 2017 à 19:51
Merci mais il n'y a pas le version en JAVA ...
KX 15369 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 22 avril 2018 Dernière intervention > electroking 191 Messages postés dimanche 14 septembre 2014Date d'inscription 23 avril 2018 Dernière intervention - 17 juil. 2017 à 23:05
"mais il n'y a pas le version en JAVA"
Tu parles de quoi ? Quel rapport avec le reste de la discussion ?
electroking 191 Messages postés dimanche 14 septembre 2014Date d'inscription 23 avril 2018 Dernière intervention - 18 juil. 2017 à 10:01
Comment je fais pour envoyer au serveur que je supporte le JAVASCRIPT avec l'entête User-Agent en JAVA ?
KX 15369 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 22 avril 2018 Dernière intervention > electroking 191 Messages postés dimanche 14 septembre 2014Date d'inscription 23 avril 2018 Dernière intervention - 18 juil. 2017 à 10:26
Le plus simple (sans changer le code) c'est de passer par la propriété http.agent
Voir la documentation : https://docs.oracle.com/javase/8/docs/api/java/net/doc-files/net-properties.html#MiscHTTP

Le plus propre (en changeant un peu le code) c'est de rajouter la propriété directement à la connexion via la méthode setRequestProperty
Voir la documentation : https://docs.oracle.com/javase/8/docs/api/java/net/URLConnection.html#setRequestProperty-java.lang.String-java.lang.String-

Il peut bien sûr y avoir encore d'autre moyens de faire selon les classes utilisées, mais à ce niveau là Google est ton ami, ajouter un header à une requête HTTP ça fait 20 ans qu'on le fait avec Java...
electroking 191 Messages postés dimanche 14 septembre 2014Date d'inscription 23 avril 2018 Dernière intervention - 18 juil. 2017 à 10:29
Je te remercie pour ton aide, je met ça dans un coin de ma tête car je viens de trouver un serveur sans JS Check (qui forçait la vérif du javascript). Par conséquent tout fonctionne.
Commenter la réponse de KX