View Javadoc
1   package net.technearts.rip;
2   
3   import java.io.BufferedReader;
4   import java.io.BufferedWriter;
5   import java.io.IOException;
6   import java.io.InputStreamReader;
7   import java.io.OutputStreamWriter;
8   import java.io.StringReader;
9   import java.net.Socket;
10  
11  import org.slf4j.Logger;
12  import org.slf4j.LoggerFactory;
13  
14  public class RequestSpy {
15    private static final Logger logger = LoggerFactory
16        .getLogger(RequestSpy.class);
17  
18    public static final String spyRequest(final String host, final int port,
19        final String req) {
20      final StringBuilder result = new StringBuilder();
21      try (Socket socket = new Socket(host, port);
22          BufferedWriter out = new BufferedWriter(
23              new OutputStreamWriter(socket.getOutputStream(), "UTF8"));
24          BufferedReader in = new BufferedReader(
25              new InputStreamReader(socket.getInputStream()));
26          BufferedReader lin = new BufferedReader(new StringReader(req));) {
27        logger.info(req);
28        String line = null;
29        while ((line = lin.readLine()) != null) {
30          try {
31            out.write(line + "\r\n");
32          } catch (final IOException e) {
33            logger.error(
34                "Erro ao enviar request para o socket em " + host + ":" + port,
35                e);
36          }
37        }
38        out.write("\r\n");
39        out.flush();
40  
41        line = null;
42        while ((line = in.readLine()) != null) {
43          result.append(line);
44        }
45        logger.info(result.toString());
46      } catch (final IOException e) {
47        logger.error("Erro ao espionar o request em " + host + ":" + port, e);
48      }
49      return result.toString();
50    }
51  
52    private final String host;
53  
54    private final int port;
55  
56    public RequestSpy(final String host, final int port) {
57      this.host = host;
58      this.port = port;
59    }
60  
61    public final String spyRequest(final String req) {
62      return spyRequest(host, port, req);
63    }
64  }