IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Probleme proxy http


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 38
    Par défaut Probleme proxy http
    Bonjour,

    je dois développer un proxy http, dans le but de faire un control parental.
    Mon problème est le suivant, pour le moment je cherche simplement a envoyer une requete http depuis mon client, à la récupérer avec mon proxy et retourner le site web demandé au client avec le code suivant :

    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
     
        public void run() {
     
            String requeteClient = "";
            String serveurWeb = "";
            String urlServeurWeb = "";
            String requeteComplete = "";
            String ligne = "";
            BufferedReader recoiClient = null, recoiServeurWeb = null;
            PrintWriter envoiClient = null, envoiServeurWeb = null;
     
            System.out.println("Debut de connection");
     
    	try {
    	    recoiClient = new BufferedReader(new InputStreamReader(clientProxy.getInputStream()));
    	    envoiClient = new PrintWriter(new BufferedWriter(new OutputStreamWriter(clientProxy.getOutputStream())));
     
                //Récupération de la requête et  l'adresse de l'hôte
                do {
                    requeteClient=recoiClient.readLine();
                    if (requeteClient.length() == 0)
                        break;
                    if (requeteClient.startsWith("Host: " )) {
                        serveurWeb = "http://" + requeteClient.substring(6);
                    }
                    if (requeteClient.startsWith("GET " )) {
                        urlServeurWeb = requeteClient.substring(4).split(" ")[0];
                    }
                    requeteComplete += requeteClient;
                } while (!requeteClient.equals("\r"));
     
                //Création élément de communication avec le serveur web
                //création de la connection au serveur web
                URL url = new URL(serveurWeb);
                URLConnection proxyServeurWeb = url.openConnection();
                proxyServeurWeb.setDoOutput(true);
                envoiServeurWeb = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proxyServeurWeb.getOutputStream())));
                recoiServeurWeb = new BufferedReader(new InputStreamReader(proxyServeurWeb.getInputStream()));
     
                //envoi de la requête
                envoiServeurWeb.write(requeteComplete);
                envoiServeurWeb.flush();
     
                //lecture et renvoi de la réponse
                while ((ligne = recoiServeurWeb.readLine())!=null) {
                    if (ligne != null) {
                        envoiClient.write(ligne);
                        envoiClient.flush();
                    }
                }
                recoiClient.close();
                recoiServeurWeb.close();
                envoiClient.close();
                envoiServeurWeb.close();
    	}
    	catch(Exception e) {
                System.out.print(e);
    	    e.printStackTrace();
    	}
            System.out.println("Fin de connection");	
        }
    Mon problème est que sur certain site web j'ai une exception du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java.io.IOException: Server returned HTTP response code: 501 for URL: http://www.google.fr
            at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1153)
    Mais certains site sont retournés correctement, à l'exception des images.

    Quelqu'un peut il m'aider????

    Fk

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Il faut probablement renvoyer le User-Agent ; en effet des sites tels que google contrôlent ce paramètre, et refusent s'il n'est pas bon. Normalement il est positionné par le navigateur dans sa requête, peut être la paumes-tu en route ?

  3. #3
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 38
    Par défaut
    Effectivement le problème pourrait venir de la car mon user-agent est le suivant :
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1

    ce qui n'est evidement plus le cas, vu que c'est mon application le nouvel agent!
    Par contre je n'ai aucune idée de ce par quoi je dois le remplacer.

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Il faut simplement que le proxy renvoie le User-Agent de ton navigateur vers le serveur. Il s'agit simplement de transmettre le flot requête issu du navigateur vers le serveur, le user-agent est déjà dedans.

  5. #5
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 38
    Par défaut
    C'est ce que je fais actuellement, et ca ne fonctionne pas!

  6. #6
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Alors je donne ma langue au chat, désolé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Passer un proxy HTTP - Tunelling
    Par Celelibi dans le forum Réseau
    Réponses: 17
    Dernier message: 05/10/2006, 23h53
  2. Probleme connexion HTTPS
    Par fxp17 dans le forum Apache
    Réponses: 5
    Dernier message: 04/08/2006, 11h55
  3. proxy http (s?)+ ftp autorisé, comment utiliser telnet ou ssh?
    Par TabrisLeFol dans le forum Applications
    Réponses: 7
    Dernier message: 12/07/2006, 14h58
  4. probleme authentification http
    Par Langly dans le forum Apache
    Réponses: 2
    Dernier message: 23/06/2006, 14h39
  5. Réponses: 3
    Dernier message: 18/04/2006, 22h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo