Signaler

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

Posez votre question electroking 166Messages postés dimanche 14 septembre 2014Date d'inscription 27 juillet 2017 Dernière intervention - Dernière réponse le 18 juil. 2017 à 10:29 par electroking
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.
Utile
+0
plus moins
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 166Messages postés dimanche 14 septembre 2014Date d'inscription 27 juillet 2017 Dernière intervention - 17 juil. 2017 à 19:51
Merci mais il n'y a pas le version en JAVA ...
Répondre
KX 14797Messages postés samedi 31 mai 2008Date d'inscription ModérateurStatut 23 septembre 2017 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 ?
Répondre
electroking 166Messages postés dimanche 14 septembre 2014Date d'inscription 27 juillet 2017 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 ?
Répondre
KX 14797Messages postés samedi 31 mai 2008Date d'inscription ModérateurStatut 23 septembre 2017 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...
Répondre
electroking 166Messages postés dimanche 14 septembre 2014Date d'inscription 27 juillet 2017 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.
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !