2017-02-20 4 views
0

게시 본문을 "수축"(헤더에서 Content-encoding: deflate을 보내야 함)해야하는 원격 서비스에 HTTP POST 요청을합니다. 내 이해에서 이것은 RFC 1950에 포함됩니다. 호환 되려면 어떤 PHP 함수를 사용해야합니까?http 요청을 수축시키는 기능은 무엇입니까?

  • gzencode
  • gzdeflate
+1

당신은'gzdeflate()'를 원한다. 이름에서 분명하지 않니? 그렇지 않다면, 문서에도 언급되어 있습니다. – Barmar

+0

@Barmar : gzdeflate'd 문자열이 옆에서 작동하지 않습니다. 그래서 내가 묻습니다. – georg

+2

코드를 보여줘야합니다. – Barmar

답변

2

Content-Encoding: deflate 데이터를 필요

  • gzcompress는 using the zlib structure (defined in RFC 1950), with the deflate compression algorithm (defined in RFC 1951)을 제시한다.

    2b492d2e0100 
    789c2b492d2e0100045d01c1 
    

    이 때문에 gzcompress 결과 유효한 ZLIB 헤더

    0111  | 1000  | 11100 | 0  | 10 
    CINFO | CM   | FCHECK | FDICT | FLEVEL 
    7=32bit | 8=deflate |   | no dict | 2=default algo 
    
    에게 것으로 보인다 789c 선행 된 버퍼 D를 gzdeflate '이다

    이 우리에게 제공

    <?php 
        $str = 'test'; 
    
        $defl = gzdeflate($str); 
        echo bin2hex($defl), "\n"; 
    
        $comp = gzcompress($str); 
        echo bin2hex($comp), "\n"; 
    ?> 
    

    고려

    이고 4 바이트의 체크섬이 이어집니다. 이것이 우리가 찾고있는 것입니다. 그것을 요약하면

    ,

    • gzdeflate
    • Content-Encoding: deflate는 포장 버퍼를 필요로하는 원료 수축 버퍼 (RFC 1951)
    • gzcompress이 ZLIB 물건에 싸여 수축 버퍼를 반환합니다 (RFC 1950)을 반환 즉,을 보낼 때 을 사용하면 gzcompress을 사용합니다. 혼란 이름이

    참고 : gzdeflateContent-Encoding: deflategzcompress에 대한 하지이다는 Content-Encoding: compress에하지입니다. 그림을 이동!