Page html

cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006 - 4 juin 2004 à 10:11
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006 - 10 juin 2004 à 11:59
Bonjour,
j'aurais voulu savoir s'il etait possible de telecharger une page html à partir d'une application Java. J'en aurais besoin pour mon projet et pour le moment j'ai rien trouvé.
Merci

cid019

14 réponses

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
4 juin 2004 à 11:20
Salut,

oui c'est facile

URl url new URL("http", "www.monsite.com","monchemin/mapage.html");
BufferedInputStream in=new BufferedInputStream(url.openStream());
// boucle de lecture du flux
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
4 juin 2004 à 13:17
voila ce que j'ai fait :

url = new URL("http", "www.meteo.fr","www.meteo.fr/meteonet/vigilance/index.html");
BufferedInputStream in = new BufferedInputStream(url.openStream());
int nb = in.available();
for (int i = 0; i < nb; ++i)
in.read();

seulement il me balance toujours l'exception : unknownHostException et quelque soit le site
ca commence a me saouler cette histoire

cid019
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
4 juin 2004 à 13:33
dans le chemin du fichier, tu ne dois pas mettre le nom du serveur.
De plus la boucle de lecture doit ressembler à ce qui suit

url = new URL("http", "www.meteo.fr", "meteonet/vigilance/index.html");
BufferedInputStream in = new BufferedInputStream(url.openStream());
//taille du buffer. A changer pour trouver la meilleure performance
byte[] bytes=new byte[512];
int nb=0;
while((nb=in.read(bytes))!=-1){
System.out.println(new String(bytes, 0, nb));
}
in.close();
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
4 juin 2004 à 15:09
j'ai rien a dire sur ton truc, ca marche super
seulement, j'ai l'impression qu'il ne recupère pas les images de la page. En plus il m'affiche du code lorque je relance la page, ca fait franchement moche

voila mon bout de code si t u veux...

class essai2 extends JFrame
{
private URL url;

public essai2() throws Exception
{
JPanel temp = (JPanel)this.getContentPane();
temp.setLayout(new BorderLayout());
setSize(400,400);
telecharge("site.html");
File page = new File("site.html");
JEditorPane jdp = new JEditorPane();
jdp.setPage(page.toURL());
jdp.setEditable(false);
temp.add(jdp);
}

public void init(){}

public void telecharge(String nomfich) throws Exception
{

url = new URL("http", "intranet.mi", "/outils/index.htm");
BufferedInputStream in = new BufferedInputStream(url.openStream());
FileOutputStream f = new FileOutputStream(nomfich);
ObjectOutputStream out = new ObjectOutputStream(f);
int nb = in.available();
byte[] bytes = new byte[nb];
int n = 0;
while ((n = in.read(bytes)) != -1)
out.write(bytes, 0, n);
in.close();
}
}

cid019
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
4 juin 2004 à 15:26
c'est normal que ça ne télécharge que le code de la page HTML. C'est un code simple qui ne télécharge pas les images.
Mais le JEditorPane peut afficher une page HTML tout seul. En plus il gère les liens hypertexte. (il y a un exemple dans la javadoc).
Tu devrais l'utiliser plutôt que de télécharger la page "à la main"

JEditorPane editorPane = new JEditorPane(new URL("http", "intranet.mi", "/outils/index.htm"));
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
4 juin 2004 à 16:01
Le probleme que j'ai maintenant est qu'il ne veut m'afficher que le site en question. Des que je lui passe comme URL un truc avec "www" il me plante.
cid019
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
4 juin 2004 à 16:28
ah ?!!
j'ai testé avec qq sites en www et ça marche très bien.
J'ai utilisé la méthode setPage() et aucun pb.
Quand tu dis qu'il plante, il se passe quoi (messages d'erreurs, ...) ?
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
4 juin 2004 à 16:32
en fait il me balance l'exception unknownHostException.
Je suis relié à Intranet avec un systeme de mot de passe donc je pense que des que je sors d'Intranet il reconnait plus.
cid019
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
4 juin 2004 à 16:40
si tu passes par un proxy c'est normal que ça plante.
Il y a de la doc sur le site de Sun au sujet des proxy et comment configurer les applis.
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
7 juin 2004 à 10:45
j'ai utilisé la classe HttpURLConnection pour vérifier di mes url utilisaient des proxys et elles en utilisent pas.
En fait, il y a une passerelle et un filtre est appliqué sur certains sites, raisons de sécurité. Si le site n'est pas dans la liste, un dialogue s'affiche pour demander login et pswd.
C'est la mon probleme.
Enfin je vais t'embeter plus longtemps avec ca...

cid019
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
7 juin 2004 à 20:32
Salut,

tout compte fait ya bien un proxy, je l'ai récupéré.
Cla dit ca a l'air chaud les proxys en java alors je crois que je vais lacher l'affaire car ca me saoule a force mais ca m'embete quand meme d'abandonner, j'aimerais bien y arriver...

cid019
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
7 juin 2004 à 20:37
pourquoi abandonner ?
c'est pas si dur. Pour les proxys il suffit de spécifier des propriétés systèmes. Voici les 3 à définir
System.getProperties().put( "proxySet", "true" );
System.getProperties().put( "proxyHost", "myProxyMachineName" );
System.getProperties().put( "proxyPort", "85" );

Pour des choses plus complexe comme le mot de passe, je te passe un lien qui t'explique tout
http://www.javaworld.com/javaworld/javatips/jw-javatip42.html
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
7 juin 2004 à 20:40
c'est franchement super
merci beaucoup
j'avais trouvé ce genre de truc sur le net mais c'etait pas tres clair

cid019
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
10 juin 2004 à 11:59
salut,

voila j'ai encore des problèmes avec ma page web

voici mon code

class essai2 extends JFrame implements HyperlinkListener
{
private URL url;
private BufferedImage img;
private JEditorPane editorPane;
private JScrollPane scrollPane;

public essai2() throws Exception
{
JPanel temp = (JPanel)this.getContentPane();
temp.setLayout(new BorderLayout());
setSize(800,600);
editorPane = new JEditorPane();
scrollPane = new JScrollPane(editorPane);

// Proxy meteo.fr : 10.253.35.2:3128
Properties p = System.getProperties();
System.out.println(p);

// definit les proprietes systemes java pour configurer le proxy
System.getProperties().put( "proxySet", "true" );
System.getProperties().put( "proxyHost", "10.253.35.2:3128" );
System.getProperties().put( "proxyPort", "85" );

// initialisation de l'url
url = new URL("http://meteo.fr");
URLConnection connection = url.openConnection();

String pswd = "nbouillet:18FPt15?";
String encoded = base64Encode(pswd);
connection.setRequestProperty( "Proxy-Authorization", encoded );
connection.setDoInput( true );
connection.setDoOutput( true );


editorPane.setPage(url);
editorPane.setEditable(false);
temp.add (scrollPane);
}

public void hyperlinkUpdate(HyperlinkEvent e)
{
if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
{
editorPane = (JEditorPane) e.getSource();
if (e instanceof HTMLFrameHyperlinkEvent)
{
HTMLFrameHyperlinkEvent evt = (HTMLFrameHyperlinkEvent)e;
HTMLDocument doc = (HTMLDocument)editorPane.getDocument();
doc.processHTMLFrameHyperlinkEvent(evt);
}
else
{
try
{
editorPane.setPage(e.getURL());
}
catch (Throwable t)
{
t.printStackTrace();
}
}
}
}

public String base64Encode(String strInput)
{
if (strInput == null)
return null;
byte byteData[] = new byte[strInput.length()];
strInput.getBytes(0, strInput.length(), byteData, 0);
return new String(base64Encode(byteData), 0);
}

public byte[] base64Encode(byte[] byteData)
{
if (byteData == null)
return null;
int iSrcIdx; // index into source (byteData)
int iDestIdx; // index into destination (byteDest)
byte byteDest[] = new byte[((byteData.length+2)/3)*4];

for (iSrcIdx=0, iDestIdx=0; iSrcIdx < byteData.length-2; iSrcIdx += 3)
{
byteDest[iDestIdx++] = (byte)((byteData[iSrcIdx] >>> 2) & 077);
byteDest[iDestIdx++] = (byte)((byteData[iSrcIdx+1] >>> 4) & 017 |
(byteData[iSrcIdx] << 4) & 077);
byteDest[iDestIdx++] = (byte)((byteData[iSrcIdx+2] >>> 6) & 003 |
(byteData[iSrcIdx+1] << 2) & 077);
byteDest[iDestIdx++] = (byte)(byteData[iSrcIdx+2] & 077);
}

if (iSrcIdx < byteData.length)
{
byteDest[iDestIdx++] = (byte)((byteData[iSrcIdx] >>> 2) & 077);
if (iSrcIdx < byteData.length-1)
{
byteDest[iDestIdx++] = (byte)((byteData[iSrcIdx+1] >>> 4) & 017 |
(byteData[iSrcIdx] << 4) & 077);
byteDest[iDestIdx++] = (byte)((byteData[iSrcIdx+1] << 2) & 077);
}
else
byteDest[iDestIdx++] = (byte)((byteData[iSrcIdx] << 4) & 077);
}

for (iSrcIdx = 0; iSrcIdx < iDestIdx; iSrcIdx++)
{
if (byteDest[iSrcIdx] < 26)
byteDest[iSrcIdx] = (byte)(byteDest[iSrcIdx] + 'A');
else if (byteDest[iSrcIdx] < 52)
byteDest[iSrcIdx] = (byte)(byteDest[iSrcIdx] + 'a'-26);
else if (byteDest[iSrcIdx] < 62)
byteDest[iSrcIdx] = (byte)(byteDest[iSrcIdx] + '0'-52);
else if (byteDest[iSrcIdx] < 63)
byteDest[iSrcIdx] = '+';
else
byteDest[iSrcIdx] = '/';
}

for ( ; iSrcIdx < byteDest.length; iSrcIdx++)
byteDest[iSrcIdx] = '=';

return byteDest;
}
}

Les méthodes d'encodage sont tout droit recupere du net.
Cependant il me dit encore que meteo.fr n'est pas reconnu
:( j'en ai marre

cid019
0
Rejoignez-nous