1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jboss.netty.example.http.snoop;
17
18 import org.jboss.netty.buffer.ChannelBuffer;
19 import org.jboss.netty.channel.ChannelHandlerContext;
20 import org.jboss.netty.channel.MessageEvent;
21 import org.jboss.netty.channel.SimpleChannelUpstreamHandler;
22 import org.jboss.netty.handler.codec.http.HttpChunk;
23 import org.jboss.netty.handler.codec.http.HttpResponse;
24 import org.jboss.netty.util.CharsetUtil;
25
26 public class HttpSnoopClientHandler extends SimpleChannelUpstreamHandler {
27
28 private boolean readingChunks;
29
30 @Override
31 public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
32 if (!readingChunks) {
33 HttpResponse response = (HttpResponse) e.getMessage();
34
35 System.err.println("STATUS: " + response.getStatus());
36 System.err.println("VERSION: " + response.getProtocolVersion());
37 System.err.println();
38
39 if (!response.headers().names().isEmpty()) {
40 for (String name: response.headers().names()) {
41 for (String value: response.headers().getAll(name)) {
42 System.err.println("HEADER: " + name + " = " + value);
43 }
44 }
45 System.err.println();
46 }
47
48 if (response.isChunked()) {
49 readingChunks = true;
50 System.err.println("CHUNKED CONTENT {");
51 } else {
52 ChannelBuffer content = response.getContent();
53 if (content.readable()) {
54 System.err.println("CONTENT {");
55 System.err.println(content.toString(CharsetUtil.UTF_8));
56 System.err.println("} END OF CONTENT");
57 }
58 }
59 } else {
60 HttpChunk chunk = (HttpChunk) e.getMessage();
61 if (chunk.isLast()) {
62 readingChunks = false;
63 System.err.println("} END OF CHUNKED CONTENT");
64 } else {
65 System.err.print(chunk.getContent().toString(CharsetUtil.UTF_8));
66 System.err.flush();
67 }
68 }
69 }
70 }