Erreur lors de téléchargement de fichier : does not support js

Résolu/Fermé
electroking Messages postés 234 Date d'inscription dimanche 14 septembre 2014 Statut Membre Dernière intervention 22 juin 2021 - Modifié le 16 juil. 2017 à 18:36
electroking Messages postés 234 Date d'inscription dimanche 14 septembre 2014 Statut Membre Dernière intervention 22 juin 2021 - 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.
A voir également:

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
16 juil. 2017 à 19:25
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.
0
electroking Messages postés 234 Date d'inscription dimanche 14 septembre 2014 Statut Membre Dernière intervention 22 juin 2021 6
16 juil. 2017 à 21:09
Merci pour ta réponse,

Oui c'était bien un copié-collé de code dépassé mais il marchait c'est tous ce qu'il m'importait, je l'avais remplacé par ceci :
URL website = new URL("http:/mondomaine/monfichier.ext");
		Path target = new File("fichier.txt").toPath();
		try (InputStream in = website.openStream()) {
			Files.copy(in, target, StandardCopyOption.REPLACE_EXISTING);
		}

Qui posait le même problème, je viens de tester le tiens, idem.
Le problème c'est que lorsque mon programme JAVA navigue vers mon URL, il est considéré comme un navigateur qui ne supporte pas JAVASCRIPT. Il me faut donc une méthode ou un paramètre qui fasse considérer au site que je supporte JAVASCRIPT, langage que je n'ai pas utilisé lors de la programmation de mon site d'ailleurs ; c'est uniquement mon serveur qui le demande.
0
electroking Messages postés 234 Date d'inscription dimanche 14 septembre 2014 Statut Membre Dernière intervention 22 juin 2021 6
Modifié le 16 juil. 2017 à 21:12
Je viens de voir avec le support de mon hébergeur, il faut que je paye plus cher pour avoir l'option qui désactive la vérification de JAVASCRIPT ...
Donc si je veux pas payer faut que je trouve une solution en JAVA
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015 > electroking Messages postés 234 Date d'inscription dimanche 14 septembre 2014 Statut Membre Dernière intervention 22 juin 2021
16 juil. 2017 à 21:21
Il pourrait suffire d'ajouter un header HTTP lors de la requête :
https://fr.wikipedia.org/wiki/User-Agent
0
electroking Messages postés 234 Date d'inscription dimanche 14 septembre 2014 Statut Membre Dernière intervention 22 juin 2021 6
17 juil. 2017 à 19:51
Merci mais il n'y a pas le version en JAVA ...
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015 > electroking Messages postés 234 Date d'inscription dimanche 14 septembre 2014 Statut Membre Dernière intervention 22 juin 2021
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 ?
0