【发布时间】:2015-06-18 00:40:40
【问题描述】:
我正在尝试从 tcpdump 捕获的 .pcap 文件中解析 HTTP 响应消息,使用 pkts.io 解析捕获文件并使用 Apache httpcommons 解析消息。
在解析捕获文件时,我将作为消息一部分的每个数据包的有效负载(通过Packet.getPayload()、doc 获得)附加到byte[] data。
如果我打印new String(data, "UTF-8"),我会得到:
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 10 Apr 2015 04:00:04 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=300
Vary: Accept-Encoding
Content-Encoding: gzip
1dd
��������������S�n�0��+X_���
��q�b�a���������Ȓf�q��G�K�I��=���������χ/�rg�f�d"kʌ\�+1l���P
]�\^�@r�{�k��;pģ�7�=t� `C+5qg�
...
当我尝试解析 HTTP 消息(下面的代码)时,我得到了所有标题,但 resp.getEntity() 返回 null。
SessionInputBufferImpl inBuffer = new SessionInputBufferImpl(new HttpTransportMetricsImpl(), packet.getData().length);
InputStream inStream = new ByteArrayInputStream(packet.getData());
inBuffer.bind(inStream);
DefaultHttpResponseParser respParser = new DefaultHttpResponseParser(inBuffer);
HttpResponse resp = (HttpResponse) respParser.parse();
我可以从哪里尝试将响应正文作为文本获取?
【问题讨论】:
标签: java pcap apache-httpcomponents