如何从TCP数据包获取HTTP正文

问题描述

我有以下代码,我使用pcap4j嗅探数据包并获得响应。我将数据包转换为TCP数据包,并尝试获取rawData。我能够获取所有标头,但HTTP响应正文显示垃圾值。

代码

 public void gotPacket(Packet packet) {
               TcpPacket tcpPacket = packet.get(TcpPacket.class);
  try {
          if(tcpPacket.getPayload()!=null) {
                        String hexStreamData = new String(tcpPacket.getPayload().getRawData(),"UTF-8");
                        System.out.println(hexStreamData);
             }
    } catch (Exception  e) {
                    // Todo Auto-generated catch block
                    e.printstacktrace();
                }

我得到的输出如下所示

HTTP/1.1 200 OK
Xet-Cookie: dp1=bu1p/QEBfX0BAX19AQA**62f4c24b^;Domain=.abc.com;Expires=Thu,11-Aug-2022 08:48:11 GMT;Path=/ 
Set-Cookie: s=CgAD4ACBfM6zLZDAxNjgasdvsfNzMwYTRlmdsfsdfgwZmZmZGI2YTZqfLYV;Domain=.abc.com;Path=/; HttpOnly 
Set-Cookie: nonsession=CgADLAAFfMmJTNxcafMJLMWNlZDQ0ZjUxNzMwYTRdsfsdYzMTc0Y2E0ZmZmZjNkM2Zyr0xe;Domain=.abc.com;Expires=Thu,11-Aug-2022 08:48:11 GMT;Path=/ 
content-encoding: gzip
Content-Type: application/json
transfer-encoding: chunked
Date: Tue,11 Aug 2020 08:48:10 GMT


11f
���Ok�0��"9����I�L�x�Mٱd鯵�&%y�Q���Vs��v�������p:�|)I��J����N7&5���#Q馜�X�)�  ��<o�x�LG
���xje���v����"�A�S�k�[��O��&�0x)S��O&&�c�7�o��)�ZE���D�e�Z��&��|����sT���h/�:������ZW�V�:���̬01�+��ߨo�WH{�Ft�1G�*�0O��s�z=�,;����N㍮���._�3��
0

如您所见,我正确解码了HTTP标头,但仍无法获取body。我什至尝试使用Base 64进行解码,但仍然无法获得理想的结果。我想获取HTTP响应的正文。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)