1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
//il fait parti d'un pakage que j'avais commencer mais dont je n'ai pas le courrage de finir
//package com.daedric.net.HTTP;
import java.net.*;
import java.io.*;
//declaration de la classe
public class HTTPGetFile {
//constructeur de la classe : elle prend pour argument une chaine de caractere....
protected String letype;
protected String erreur="";
protected int lenght;
protected String montexte;
public HTTPGetFile(String HOST, String lechemin,int a,String requete, String langagechoisi) {
try {
//.... et l'utilise pour initialiser une url
URL racine = new URL(HOST);
//appel la methode getFile sur l'url pour commencer a recuperer le fichier
getFile(racine, lechemin, a, HOST, langagechoisi, requete);
}catch (MalformedURLException e) {erreur=erreur+(HOST + " : URL non comprise.");}
catch (IOException e) { erreur=erreur+e.getMessage();
}
// ces ligne sont entoure d'un bloc try au cas ou il y aurait des exeption : par exemple si l'url n'es pas valide
}
// commencement de get file avec comme argument l'url
public void getFile(URL u, String lechemin, int a,String url, String langagechoisi, String larequete) throws IOException {
//ouvre la connection
URLConnection uc = u.openConnection( );
// regarde quel type est le fichier a telecharger
letype = uc.getContentType( );
// recupere la taille du fichier .....
int FileLenght = uc.getContentLength( );
//uc.getContentEncoding();
//....pour tester si c'est un fichier valide .
if (letype == null){letype="over";erreur = erreur + "requete : <font color=blue><i>"+larequete+"</i></font> (<font color=purple>"+langagechoisi+"</font>) : <a href=\""+url+"\"> lien"+a+"</a> Erreur 404 le fichier n'existe pas (lien brisé)<br>";}
else{
if(letype.equals("application/pdf")) {
if (FileLenght == -1 ) {
throw new IOException( "Fichier <font color=red>non</font> valide : (taille = -1) "+"</font>encoding : <font color=red>"+uc.getContentEncoding()+" </font>   type :<font color=red>"+uc.getContentType()+"</font>   la taille : <font color=red>"+uc.getContentLength()+" </font> ");
}
// le bloc si dessous jusqu'a entree.close permet de copier le fichier
// bit par bit ,en utilisant un tableau ,sur l'ordinnateur dans le repertoir local
// uc.setRequestProperty()
InputStream brut = uc.getInputStream( );
InputStream entree = new BufferedInputStream(brut);
byte[] donnees = new byte[FileLenght];
int BitRead = 0;
int deplacement = 0;
while (deplacement < FileLenght) {
BitRead = entree.read(donnees, deplacement, donnees.length-deplacement);
if (BitRead == -1) break;
//if (BitRead == '\n'){}
deplacement += BitRead;
}
lenght = donnees.length;
//erreur =erreur + "<font color=green>Fichier valide : "+"</font>encoding : <font color=green>"+uc.getContentEncoding()+" </font>   type : <font color=green>"+uc.getContentType()+" </font>  la taille : <font color=green>"+uc.getContentLength()+"</font> ";
// ferme le flux
entree.close( );
// regarder si le fichier est valide
if (deplacement != FileLenght) {
throw new IOException("Nous n'avons lu que " + deplacement
+ " octets au lieu des " + FileLenght + " attendus");
}
// recuperation de l'url pour une ....
//String FileName = u.getFile( );
//....decortication de la chaine pour avoir le nom du fichier
//FileName = FileName.substring(FileName.lastIndexOf('/') + 1);
// ouverture d'un flux de donnee pour ecrire le fichier
FileOutputStream WritenFile = new FileOutputStream(lechemin);
// ecrit le fichier sur l'ordinnateur
WritenFile.write(donnees);
//vide le tampon au cas ou tout ne serai pas ecris
WritenFile.flush( );
//ferme le flux
WritenFile.close( );
// String trans = new String(donnees);
}
else //if(!(letype.equals("application/pdf")))
{
InputStream ips = u.openStream(); //gestion de la connection grâce à cet objet
//gestion du flux de l'url
String ligne;
BufferedReader in=new BufferedReader(new InputStreamReader(ips));
while ((ligne=in.readLine())!=null){ligne=ligne+" ";montexte=montexte+ligne;}
in.close();
lenght= montexte.length();
FileOutputStream fichtraitement;
try{
fichtraitement = new FileOutputStream(lechemin);
fichtraitement.write(("<!- "+u.getHost()+"-->"+"\r\n\r\n"+montexte).getBytes());
fichtraitement.close();
}catch (IOException exc ){erreur=erreur+"requete : ("+larequete+" ("+langagechoisi+")) google : lien"+a+" " +exc.getMessage()+"<br>";}
}}
}
} |
Partager