17.5. Zend_Http_Response

17.5.1. µµÀÔ

Zend_Http_Response (Àº)´Â,HTTP ¸®½ºÆù½º¿¡ °£´ÜÇÏ°Ô ¾×¼¼½º ÇÒ ¼ö ÀÖµµ·Ï(µíÀÌ) ÇÕ´Ï´Ù. ¶Ç,HTTP ¸®½ºÆù½º ¸Þ¼¼Áö¸¦ ÆÛ½ºÇϱâ À§ÇÑ Á¤Àû ¸Þ¼Òµå±ºµµ Á¦°øÇÕ´Ï´Ù. Åë»óÀº,Zend_Http_Response ÇÏ Zend_Http_Client ¸®Äù½ºÆ®°¡ µ¹·ÁÁÖ´Â °á°úÀûÀ¸·Î »ç¿ëÇÕ´Ï´Ù.

´ëºÎºÐÀÇ °æ¿ì´Â,Zend_Http_Response ¿ÀºêÁ§Æ®ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÏ·Á¸é factory() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.À̰ÍÀº,HTTP ¸®½ºÆù½º ¸Þ¼¼Áö¸¦ Æ÷ÇÔÇÑ ¹®ÀÚ¿­À» ¹Þ¾Æ »õ·Ó´Ù Zend_Http_Response ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù.

·Ê 17.24. ÆÑÅ丮 ¸Þ¼Òµå¸¦ »ç¿ëÇß´Ù Zend_Http_Response ¿ÀºêÁ§Æ®ÀÇ ÀÛ¼º


<?php
$str 
'';
$sock fsockopen('www.example.com'80);
$req =     "GET / HTTP/1.1rn" .
        
"Host: www.example.comrn" .
        
"Connectoin: closern" .
        
"rn";

fwrite($sock$req);
while (
$buff fread($sock1024))
    
$str .= $sock;

$response Zend_Http_Response::factory($str);


constructor¡¡ ¡¡ À» »ç¿ëÇØ »õ·Î¿î ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ±× ¶§¿¡´Â, ¸®½ºÆù½ºÀÇ ÀüÆÄ¶ó¹ÌÅ͸¦ ÁöÁ¤ÇÕ´Ï´Ù.

public function __construct($code, $headers, $body = null, $version = '1.1', $message = null)

  • $code: HTTP ¸®½ºÆù½º ÄÚµå (¿¹¸¦ µé¾î 200 (ÀÌ)³ª 404 µî).

  • $headers: HTTP ¸®½ºÆù½º Çì´õÀÇ ¿¬»ó ¹è¿­ (¿¹¸¦ µé¾î 'Host' => 'example.com' µî).

  • $body: ¸®½ºÆù½º º»¹®ÀÇ ¹®ÀÚ¿­.

  • $version: HTTP ¸®½ºÆù½ºÀÇ ¹öÁ¯ (Åë»óÀº 1.0 ȤÀº 1.1).

  • $message: HTTP ¸®½ºÆù½º ¸Þ¼¼Áö (¿¹¸¦ µé¾î 'OK' (ÀÌ)³ª 'Internal Server Error' µî). ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ø °æ¿ì´Â, ¸®½ºÆù½º Äڵ忡 ÀÀÇÑ ¸Þ¼¼Áö°¡ ¼³Á¤µË´Ï´Ù.

17.5.2. ÁøÀ§ üũ¿ëÀÇ ¸Þ¼Òµå

Zend_Http_Response ÀÇ ÀνºÅϽº¸¦ ÃëµæÇϸé, ¸®½ºÆù½ºÀÇ Á¾·ù¸¦ Á¶»çÇϱâ À§ÇÑ ¸Þ¼Òµå¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ÀÌ·¯ÇÑ ¸Þ¼Òµå´Â, ¸ðµÎ true ȤÀº false (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù.

  • Boolean isSuccessful(): ¸®Äù½ºÆ®°¡ ¼º°øÇß´ÂÁö¸¦ Á¶»çÇÕ´Ï´Ù. HTTP ¸®½ºÆù½º Äڵ尡 1xx Àΰ¡ 2xx ¿¡¼­ ¸¸³µÀ» °æ¿ì¿¡ TRUE (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù.

  • Boolean isError(): ¸®½ºÆù½º Äڵ尡 ¿¡·¯¸¦ ÀǹÌÇϰí ÀÖÀ»Áö¸¦ Á¶»çÇÕ´Ï´Ù. HTTP ¸®½ºÆù½º Äڵ尡 4xx (Ŭ¶óÀ̾ðÆ®ÀÇ ¿¡·¯) ȤÀº 5xx (¼­¹öÀÇ ¿¡·¯) ¿¡¼­ ¸¸³µÀ» °æ¿ì¿¡ TRUE (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù.

  • Boolean isRedirect(): ¸®½ºÆù½º°¡ ¸®µð·ºÆ® µÇ°í ÀÖ´ÂÁö ¾î¶²Áö¸¦ Á¶»çÇÕ´Ï´Ù. HTTP ¸®½ºÆù½º Äڵ尡 3xx ¿¡¼­ ¸¸³µÀ» °æ¿ì¿¡ TRUE (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù.

·Ê 17.25. isError() ¸Þ¼ÒµåÀÇ »ç¿ë¿¡ ÀÇÇÑ ¸®½ºÆù½ºÀÇ °ËÁõ


<?php
if ($response->isError()) {
  echo 
"µ¥ÀÌÅÍ Àü¼Û ¿¡·¯.n"
  
echo "¼­¹ö·ÎºÎÅÍÀÇ ÀÀ´ä: " $response->getStatus() . " " $response->getMessage() . "n";
}
// .. ¿©±â¼­ ¸®½ºÆù½º¸¦ ó¸®ÇÕ´Ï´Ù...


17.5.3. ¾×¼¼½º¿ë ¸Þ¼Òµå±º

¸®½ºÆù½º ¿ÀºêÁ§Æ®ÀÇ º»·¡ÀÇ ¸ñÀûÀº, ¸®½ºÆù½º ÆÄ¶ó¹ÌÅÍ¿¡ °£´ÜÇÏ°Ô ¾×¼¼½º ÇÏ´Â °ÍÀÔ´Ï´Ù.

  • int getStatus(): HTTP ¸®½ºÆù½º ½ºÅ×ÀÌÅͽº ÄÚµå (¿¹¸¦ µé¾î 200 (ÀÌ)³ª 504 µî) (À»)¸¦ ÃëµæÇÕ´Ï´Ù.

  • string getMessage(): HTTP ¸®½ºÆù½º ½ºÅ×ÀÌÅͽºÀÇ ¸Þ¼¼Áö (¿¹¸¦ µé¾î "Not Found" (ÀÌ)³ª "Authorization Required" µî) (À»)¸¦ ÃëµæÇÕ´Ï´Ù.

  • string getBody(): HTTP ¸®½ºÆù½º º»¹®À» µðÄÚµåÇÑ °ÍÀ» ÃëµæÇÕ´Ï´Ù.

  • string getRawBody(): ±×´ë·ÎÀÇ »óÅÂÀÇ, ¾Æ¸¶ encode µÇ°í ÀÖ´Ù HTTP ¸®½ºÆù½º º»¹®À» ÃëµæÇÕ´Ï´Ù.¿¹¸¦ µé¾î GZIP µî¿¡¼­ encode µÇ°í ÀÖ¾ú´Ù°í ÇØµµ, ±×°ÍÀº µðÄÚµåµÇÁö ¾Ê½À´Ï´Ù.

  • array getHeaders(): HTTP ¸®½ºÆù½º Çì´õ¸¦, ¿¬»ó ¹è¿­ Çü½Ä (¿¹¸¦ µé¾î 'Content-type' => 'text/html' µî) ±×¸®°í ÃëµæÇÕ´Ï´Ù.

  • string|array getHeader($header): $header ±×¸®°í ÁöÁ¤ÇÑ, ƯÁ¤ÀÇ HTTP ¸®½ºÆù½º Çì´õ¸¦ ÃëµæÇÕ´Ï´Ù.

  • string getHeadersAsString($status_line = true, $br = "n"): Çì´õ Àüü¸¦ ¹®ÀÚ¿­·Î¼­ ÃëµæÇÕ´Ï´Ù.$status_line ÇÏÁö¸¸ true ÀÇ °æ¿ì (µðÆúÆ®) (Àº)´Â, ÃÖÃÊÀÇ ½ºÅ×ÀÌÅͽºÇà (¿¹¸¦ µé¾î "HTTP/1.1 200 OK" µî) µµ µ¹·ÁÁÖ¾îÁý´Ï´Ù. °³ÇàÀº $br ÆÄ¶ó¹ÌÅÍ·Î ÁöÁ¤ÇÕ´Ï´Ù (¿¹¸¦ µé¾î "<br />" µî¿¡µµ ÇÒ ¼ö ÀÖ½À´Ï´Ù).

  • string asString($br = "n"): ¸®½ºÆù½º ¸Þ¼¼Áö Àüü¸¦ ¹®ÀÚ¿­·Î¼­ ÃëµæÇÕ´Ï´Ù. °³ÇàÀº $br ÆÄ¶ó¹ÌÅÍ·Î ÁöÁ¤ÇÕ´Ï´Ù (¿¹¸¦ µé¾î "<br />" µî¿¡µµ ÇÒ ¼ö ÀÖ½À´Ï´Ù).

·Ê 17.26. Zend_Http_Response ¿¡ÀÇ ¾×¼¼½º¿ë ¸Þ¼ÒµåÀÇ »ç¿ë


<?php
if ($response->getStatus() == 200) {
  echo 
"¸®Äù½ºÆ®ÀÇ °á°ú´Â ´ÙÀ½°ú °°ÀÌ µÇ¾ú½À´Ï´Ù.<br />";
  echo 
$response->getBody();
} else {
  echo 
"µ¥ÀÌÅÍÀÇ Ãëµæ½Ã¿¡ ¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù.<br />";
  echo 
$response->getStatus() . ": " $response->getMessage();
}


[ÁÖÀÇ] Ç×»ó µ¹¾Æ°¡ °ªÀ» üũÇÑ´Ù

¸®½ºÆù½º¿¡´Â °°Àº Çì´õ¸¦ º¹¼ö Æ÷ÇÔÇÒ ¼ö ÀÖÀ¸¹Ç·Î, getHeader() ¸Þ¼Òµå³ª getHeaders() ¸Þ¼Òµå°¡ µ¹·ÁÁÖ´Â °á°ú´Â ¹®ÀÚ¿­ÀÇ °æ¿ìµµ ÀÖÀ¸¸é ¹®ÀÚ¿­ÀÇ ¹è¿­ÀÌ µÇ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù. µ¹·ÁÁÖ¾îÁø °ªÀÌ ¹®ÀÚ¿­Àΰ¡ ¹è¿­Àΰ¡¸¦ Ç×»ó üũÇϵµ·Ï ÇսôÙ.

·Ê 17.27. ¸®½ºÆù½º Çì´õ¿¡ÀÇ ¾×¼¼½º


<?php
$ctype 
$response->getHeader('Content-type');
if (
is_array($ctype)) $ctype $ctype[0];

$body $response->getBody();
if (
$ctype == 'text/html' || $ctype == 'text/xml') {
  
$body htmlentities($body);
}

echo 
$body;


17.5.4. Á¤Àû HTTP ¸®½ºÆù½º ÆÄ¼­

Zend_Http_Response Ŭ·¡½º¿¡´Â, ³»ºÎ¿¡¼­ »ç¿ëÇÏ´Â ¸Þ¼Òµåµµ ¸î°³Àΰ¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. À̰ÍÀº,HTTP ¸®½ºÆù½º ¸Þ¼¼Áö¸¦ ó¸®Çϰųª ÆÛ½º ÇϰųªÇϱâ À§ÇÑÀÇ °ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ¸Þ¼Òµå´Â Á¤Àû ¸Þ¼Òµå·Î¼­ °ø°³µÇ°í ÀÖ½À´Ï´Ù. Áï ¿ÜºÎ·ÎºÎÅÍ¿¡¼­µµ »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù.ƯÈ÷ ÀνºÅϽº¸¦ ÀÛ¼ºÇÏÁö ¾Ê¾Æµµ, ¸®½ºÆù½ºÀÇ ÀϺθ¦ ÃßÃâÇϰųª¶ó°í ÇÏ´Â ¸ñÀûÀ¸·Î »ç¿ë °¡´ÉÇÕ´Ï´Ù.

  • int Zend_Http_Response::extractCode($response_str): HTTP ¸®½ºÆù½º ÄÚµå (¿¹¸¦ µé¾î 200 (ÀÌ)³ª 404 µî) (À»)¸¦ $response_str (À¸)·ÎºÎÅÍ ÃßÃâÇØ, ±×°ÍÀ» µ¹·ÁÁÝ´Ï´Ù.

  • string Zend_Http_Response::extractMessage($response_str): HTTP ¸®½ºÆù½º ¸Þ¼¼Áö (¿¹¸¦ µé¾î "OK" (ÀÌ)³ª "File Not Found" µî) (À»)¸¦ $response_str (À¸)·ÎºÎÅÍ ÃßÃâÇØ, ±×°ÍÀ» µ¹·ÁÁÝ´Ï´Ù.

  • string Zend_Http_Response::extractVersion($response_str): HTTP ¹öÁ¯ (¿¹¸¦ µé¾î 1.1 (ÀÌ)³ª 1.0 µî) (À»)¸¦ $response_str (À¸)·ÎºÎÅÍ ÃßÃâÇØ, ±×°ÍÀ» µ¹·ÁÁÝ´Ï´Ù.

  • array Zend_Http_Response::extractHeaders($response_str): HTTP ¸®½ºÆù½º Çì´õ¸¦ $response_str (À¸)·ÎºÎÅÍ ÃßÃâÇØ, ±×°ÍÀ» ¹è¿­·Î µ¹·ÁÁÝ´Ï´Ù.

  • string Zend_Http_Response::extractBody($response_str): HTTP ¸®½ºÆù½º º»¹®À» $response_str (À¸)·ÎºÎÅÍ ÃßÃâÇØ, ±×°ÍÀ» µ¹·ÁÁÝ´Ï´Ù.

  • string Zend_Http_Response::responseCodeAsText($code = null, $http11 = true): ¸®½ºÆù½º ÄÚµå $code ¿¡ ´ëÀÀÇÏ´Â, Ç¥ÁØÀûÀÎ HTTP ¸®½ºÆù½º ¸Þ¼¼Áö¸¦ ÃëµæÇÕ´Ï´Ù. ¿¹¸¦ µé¾î $code ÇÏÁö¸¸ 500 ÀÇ °æ¿ì´Â "Internal Server Error" (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù. $http11 ÇÏÁö¸¸ true ÀÇ °æ¿ì (µðÆúÆ®) ÇÏ HTTP/1.1 ÀÇ ¸Þ¼¼Áö¸¦, ±×·¸Áö ¾ÊÀº °æ¿ì´Â HTTP/1.0 ÀÇ ¸Þ¼¼Áö¸¦ µ¹·ÁÁÝ´Ï´Ù. $code (À»)¸¦ »ý·« ÇßÀ» °æ¿ì´Â, ÀÌ ¸Þ¼Òµå´Â, ¸ðµç ±âÁ¸ÀÇ HTTP ¸®½ºÆù½º Äڵ带 ¿¬»ó ¹è¿­ (code => message) ±×¸®°í µ¹·ÁÁÝ´Ï´Ù.

ÆÄ¼­ ¸Þ¼Òµå À̿ܿ¡µµ, ÀÌ Å¬·¡½º¿¡´Â ÀϹÝÀûÀÎ HTTP ¸®½ºÆù½º ÀÎÄÚµù¿¡ ´ëÀÀÇÑ µðÄÚ´õ°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.

  • string Zend_Http_Response::decodeChunkedBody($body): "Content-Transfer-Encoding: Chunked" ÀÇ º»¹®À» µðÄÚµåÇÕ´Ï´Ù.

  • string Zend_Http_Response::decodeGzip($body): "Content-Encoding: gzip" ÀÇ º»¹®À» µðÄÚµåÇÕ´Ï´Ù.

  • string Zend_Http_Response::decodeDeflate($body): "Content-Encoding: deflate" ÀÇ º»¹®À» µðÄÚµåÇÕ´Ï´Ù.