Bonjour,
Voici un bref (et clair je l'espère ^^) exposé de mon problème :
Je suis actuellement en train de développer une petite appli java qui doit permettre de récupérer le code html d'une page web à partir d'une url. Au début cela ne marchais qu'en local et me mettais un connection timeout si j'essayais sur le net... Après quelques recherche je me suis rendu compte que c'était le proxy de ma boite qui me bloquais car pas configuré dans mon programme. nous utilisons un proxy configuré automatiquement au moyen d'un script proxy.pac
J'ai donc éditer ce fichier en .pac, récupéré l'adresse du proxy et son port puis j'ai configuré tout ça dans mon programme comme ceci :
résultat ça marche très bien pour le web mais du coup cela ne marche plus en local..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 import java.io.IOException; import java.io.InputStream; import java.net.InetAddress; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.net.UnknownHostException; public class main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.setProperty("http.proxyHost","monProxy"); System.setProperty("http.proxyPort","8088"); String html = new String(); //Chargement du code la page web html = getIpFrom("url"); System.out.println(html); String host = "localhost"; int timeout = 3000; boolean status=false; try { //Ping sur une url donnée status = InetAddress.getByName(host).isReachable(timeout); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(status); } public static String getIpFrom(String adresse) { String toreturn = null; try{ //Creation d'un objet URL URL url = new URL(adresse); //On établit une connection a cette url URLConnection uc = url.openConnection(); //On y cree un flus de lecture InputStream in = uc.getInputStream(); //On lit le premier bit int c = in.read(); //On cree un string builder pour la suite y ajouter tout les bits lus StringBuilder build = new StringBuilder(); //Tant que c n'est pas égale au bit indiquant la fin d'un flux... while(c!=-1) { build.append((char)c); //...On l'ajoute dans le string builder... c=in.read(); //...et on lit le suivant } //On retourn le code de la page toreturn = build.toString(); } catch(MalformedURLException e){ e.printStackTrace(); } catch(IOException e){ e.printStackTrace(); } return toreturn; } }
A noter que c'est l'inverse pour la partie de mon code qui effectue un ping... ça marche en local mais pas sur le net...
Du coup après retour sur le script de configuration du proxy, il apparait que le nom de celui-ci est différent selon l'url que l'on veut... est-il possible de configurer directement mon programme en intégrant le dit script?
Merci d'avance de vos participations
edit : lorsque je tente de récupérer le contenue html d'une page en local, voici le message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.Socket.connect(Socket.java:520) at java.net.Socket.connect(Socket.java:470) at sun.net.NetworkClient.doConnect(NetworkClient.java:157) at sun.net.www.http.HttpClient.openServer(HttpClient.java:388) at sun.net.www.http.HttpClient.openServer(HttpClient.java:523) at sun.net.www.http.HttpClient.<init>(HttpClient.java:231) at sun.net.www.http.HttpClient.New(HttpClient.java:304) at sun.net.www.http.HttpClient.New(HttpClient.java:321) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:813) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:765) at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:690) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:934) at main.getIpFrom(main.java:46) at main.main(main.java:20)
Partager