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 :
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
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"); }
Mais certains site sont retournés correctement, à l'exception des images.
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)
Quelqu'un peut il m'aider????
Fk
Partager