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($sock, 1024))
$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' µî).
ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ø °æ¿ì´Â, ¸®½ºÆù½º Äڵ忡 ÀÀÇÑ ¸Þ¼¼Áö°¡ ¼³Á¤µË´Ï´Ù.
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";
}
// .. ¿©±â¼ ¸®½ºÆù½º¸¦ ó¸®ÇÕ´Ï´Ù...
¸®½ºÆù½º ¿ÀºêÁ§Æ®ÀÇ º»·¡ÀÇ ¸ñÀûÀº, ¸®½ºÆù½º ÆÄ¶ó¹ÌÅÍ¿¡ °£´ÜÇÏ°Ô ¾×¼¼½º ÇÏ´Â °ÍÀÔ´Ï´Ù.
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;
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" ÀÇ º»¹®À» µðÄÚµåÇÕ´Ï´Ù.