accès internet via un proxy dans une application java [java] - Programmation
Marsh Posté le 21-09-2001 à 08:56:45
je crois qu'il faut aussi que le proxy accèpt les sockets !
Marsh Posté le 21-09-2001 à 09:13:28
je pense que ca ne vient pas du proxy puisque la classe URL arrive bien à y accéder, elle. Et elle utilise forcement des sockets aussi ...
J'ai essayé d'aller voir comment fonctionne la classe URL dans le code de la SDK, mais y a des classes sun.net.... qui sont utilsées et j'ai pas leur source
personne d'autres n'a une idée ???
je me suis dis que peut être qu'il faut ouvrir une socket directement vers le proxy et lui envoyer une requête à lui, mais je ne connais pas du tout le protocole d'un proxy HTTP.
Quelqu'un connait ca ???
Marsh Posté le 20-09-2001 à 18:19:45
voilà mon problème :
J'ai une application qui doit pouvoir lire des pages web. Il y a une classe bien pratique pour ca en Java : la classe URL. Pour certaines raisons, je ne l'utilise pas : j'ouvre une socket vers le site, je lance ma requete HTTP et je reçois la réponse.
avec un accès direct à internet ca marche impec. Maintenant, je dois pouvoir faire fonctionner mon appli via un proxy.
Avec les recherche que j'ai fait, j'ai vu qu'on pouvait faire ca facilement en ajoutant ces lignes :
System.getProperties().put( "proxySet", "true" );
System.getProperties().put( "proxyHost", "ip_du_proxy" );
System.getProperties().put( "proxyPort", "80" );
ca marche très bien avec la classe URL, mais quand je passe par des socket ca ne marche plus du tout !!
c'est comme si les sockets n'utilisait pas ces propriétés.
Y a t'il d'autre réglage à faire ou comment communiquer aux socket ces propriétés ???
merci de me venir en aide parce que là, je sèche !
voici mes fichiers de test : Test marche, mais Test2 marche pas !
-------------------------------------------------------------
import java.net.*;
import java.io.*;
public class Test {
public static void main(String[] args) throws Exception {
System.getProperties().put( "proxySet", "true" );
System.getProperties().put( "proxyHost", "ip_du_proxy" );
System.getProperties().put( "proxyPort", "80" );
URL url = new URL("http://www.yahoo.com" );
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream() ));
String tmp;
while ((tmp = reader.readLine()) != null)
System.out.println(tmp);
}
}
--------------------------------------------------------------
import java.net.*;
import java.io.*;
public class Test2 {
public static void main(String[] args) throws Exception {
System.getProperties().put( "proxySet", "true" );
System.getProperties().put( "proxyHost", "ip_du_proxy" );
System.getProperties().put( "proxyPort", "80" );
String host = "www.yahoo.com";
int port = 80;
Socket socket = new Socket(host,port);
PrintWriter out;
BufferedReader in;
out = new PrintWriter(socket.getOutputStream());
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out.println("GET / HTTP/1.0" );
out.println("User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)" );
out.println("Host: " + host + ":" + port);
out.println("Content-Length: 0" );
out.println("Connection: close" );
out.println("" );
out.flush();
String line;
while ((line = in.readLine()) != null)
System.out.println(line);
in.close();
out.close();
socket.close();
}
}
---------------------------------------------
remarque : j'ai vérifié la requete HTTP, elle est bonne (j'arrive à accéder à des web locaux juste en changeant la variable host)