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 74 75 76 77 78 79 80 81 82 83 84 85
| // recupere la reponse du serveur et la transmet au client.
private boolean transfererReponseServeurAuClient() {
InputStream inputStreamServeur = null;
OutputStream outputStreamClient = null;
String headerReponseServeur = "";
String contentReponseServeur = "";
try {
inputStreamServeur = socketServeur.getInputStream();
}
catch (Exception e) {
System.out.println("ProxyConnection.transfererReponseServeurAuClient: Erreur ouverture inputStream socket Serveur - " + e.getMessage() + ". FIN PROCESSUS");
log.addMessage("ProxyConnection.transfererReponseServeurAuClient - Erreur ouverture inputStream socket Serveur", e.getMessage());
log.addMessage("ProxyConnection.transfererReponseServeurAuClient", "FIN PROCESSUS");
closeSocket(socketClient);
return false;
}
try {
outputStreamClient = socketClient.getOutputStream();
}
catch (Exception e) {
System.out.println("ProxyConnection.transfererReponseServeurAuClient: Erreur ouverture outputStream socket Client - " + e.getMessage() + ". FIN PROCESSUS");
log.addMessage("ProxyConnection.transfererReponseServeurAuClient - Erreur ouverture outputStream socket Client", e.getMessage());
log.addMessage("ProxyConnection.transfererReponseServeurAuClient", "FIN PROCESSUS");
closeSocket(socketServeur);
return false;
}
try {
byte onebyte[] = new byte[1];
boolean end = false;
// recuperation du header, byte par byte.
// on determine la fin avec _CRLF2.
// on transfert directement les donnees au client.
while(!end) {
if(inputStreamServeur.read(onebyte) <= 0) {
end = true;
continue;
}
else {
headerReponseServeur += new String(onebyte, "8859_1");
outputStreamClient.write(onebyte, 0, onebyte.length);
}
if(headerReponseServeur.endsWith(_CRLF2))
end = true;
}
outputStreamClient.flush();
System.out.println("ProxyConnection.recupererRequeteServeur: header:\n" + headerReponseServeur);
// recuperation du contenu, byte par byte.
// on transfert directement les donnees au client.
// si le contenu est vide, alors une exception silencieuse est levee.
end = false;
while(!end) {
if (inputStreamServeur.read(onebyte) <= 0) {
end = true;
continue;
}
else {
contentReponseServeur += new String(onebyte, "8859_1");
outputStreamClient.write(onebyte, 0, onebyte.length);
System.out.println("ProxyConnection.recupererRequeteServeur contenu:\n" + contentReponseServeur);
}
}
outputStreamClient.flush();
System.out.println("ProxyConnection.recupererRequeteServeur contenu:\n" + contentReponseServeur);
return true;
}
catch (Exception e) {
System.out.println("ProxyConnection.transfererReponseServeurAuClient: " + e.getMessage() + ". FIN PROCESSUS");
log.addMessage("ProxyConnection.transfererReponseServeurAuClient", e.getMessage());
log.addMessage("ProxyConnection.transfererReponseServeurAuClient", "FIN PROCESSUS");
closeSocket(socketClient);
closeSocket(socketServeur);
return false;
}
} |
Partager