模拟http请求 带 chunked解析办法二

PHP代码为例

//这个是解析chuned

get_chunk_data($fsock)

{

      $data = '';

      while(true)

      {

        $len = hexdec(fgets($fsock));

        if($len == 0)

        {

          if(fgets($fsock) == " ")

            break;

        }

        $data .= fread($fsock, $len);

        fgets($fsock);

      }

      return $data;

}

//这是PHP获取socket内容

while(!feof($fsock))

{

        $temp_str = fgets($fsock);

        //请求获取完成

        if($temp_str == " ")

        {

          //解析chuned

          $response_str .= $temp_str.get_chunk_data($fsock);

  break;//直接跳出

    }

    $response_str .= $temp_str;

}

$response_str 最后就是解析的内容

还有个办法就是取消请求里的

   "Accept-Encoding: gzip, deflate " 这个选项。有的服务器会选择不使用chuned数据传输

另外使用

   POST /zhenaiMail/sendGreet.jsps HTTP/1.1 修改为

   POST /zhenaiMail/sendGreet.jsps HTTP/1.0

使用http协议 1.0 也可以的。

 jpg改rar

原文地址:https://www.cnblogs.com/kuangke/p/6411534.html