Я пытаюсь проанализировать ответное сообщение HTTP из файла .pcap, захваченного tcpdump, с помощью 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();
Куда я могу перейти отсюда, чтобы попытаться получить тело ответа в виде текста?