Zend_Http_Response (Àº)´Â,HTTP ¸®½ºÆù½º¿¡ °£´ÜÇÏ°Ô ¾×¼¼½º ÇÒ ¼ö ÀÖµµ·Ï(µíÀÌ) ÇÕ´Ï´Ù. ¶Ç,HTTP ¸®½ºÆù½º ¸Þ¼¼Áö¸¦ ÆÛ½ºÇϱâ À§ÇÑ Á¤Àû ¸Þ¼Òµå±ºµµ Á¦°øÇÕ´Ï´Ù. Åë»óÀº,Zend_Http_Response ÇÏ Zend_Http_Client ¸®Äù½ºÆ®°¡ µ¹·ÁÁÖ´Â °á°úÀûÀ¸·Î »ç¿ëÇÕ´Ï´Ù.
´ëºÎºÐÀÇ °æ¿ì´Â,Zend_Http_Response ¿ÀºêÁ§Æ®ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÏ·Á¸é factory() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.À̰ÍÀº,HTTP ¸®½ºÆù½º ¸Þ¼¼Áö¸¦ Æ÷ÇÔÇÑ ¹®ÀÚ¿À» ¹Þ¾Æ »õ·Ó´Ù Zend_Http_Response ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù.
·Ê 13.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 (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù.
·Ê 13.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 />"
µî¿¡µµ ÇÒ ¼ö ÀÖ½À´Ï´Ù) .
·Ê 13.26. Zend_Http_Response ¿¡ÀÇ ¾×¼¼½º¿ë ¸Þ¼ÒµåÀÇ »ç¿ë
<?php
if ($response->getStatus() == 200) {
echo "
¸®Äù½ºÆ®ÀÇ °á°ú´Â ´ÙÀ½°ú °°ÀÌ µÇ¾ú½À´Ï´Ù.<br />";
echo $response->getBody();
} else {
echo "
µ¥ÀÌÅÍÀÇ Ãëµæ½Ã¿¡ ¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù.<br />";
echo $response->getStatus() . ": " . $response->getMessage();
}
?>
![]() |
Ç×»ó µ¹¾Æ°¡ °ªÀ» üũÇÑ´Ù |
---|---|
¸®½ºÆù½º¿¡´Â °°Àº Çì´õ¸¦ º¹¼ö Æ÷ÇÔÇÒ ¼ö ÀÖÀ¸¹Ç·Î, getHeader() ¸Þ¼Òµå³ª getHeaders() ¸Þ¼Òµå°¡ µ¹·ÁÁÖ´Â °á°ú´Â ¹®ÀÚ¿ÀÇ °æ¿ìµµ ÀÖÀ¸¸é ¹®ÀÚ¿ÀÇ ¹è¿ÀÌ µÇ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù. µ¹·ÁÁÖ¾îÁø °ªÀÌ ¹®ÀÚ¿Àΰ¡ ¹è¿Àΰ¡¸¦ Ç×»ó üũÇϵµ·Ï ÇսôÙ. |
·Ê 13.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,
$http11 = true)
: ¸®½ºÆù½º ÄÚµå $code ¿¡ ´ëÀÀÇÏ´Â, Ç¥ÁØÀûÀÎ HTTP ¸®½ºÆù½º ¸Þ¼¼Áö¸¦ ÃëµæÇÕ´Ï´Ù.
¿¹¸¦ µé¾î $code ÇÏÁö¸¸ 500 ÀÇ °æ¿ì´Â "Internal Server Error"
(À»)¸¦ µ¹·ÁÁÝ´Ï´Ù. $http11 ÇÏÁö¸¸ true ÀÇ °æ¿ì ( µðÆúÆ®) ÇÏ HTTP/1.1 ÀÇ
¸Þ¼¼Áö¸¦, ±×·¸Áö ¾ÊÀº °æ¿ì´Â HTTP/1.0 ÀÇ ¸Þ¼¼Áö¸¦ µ¹·ÁÁÝ´Ï´Ù.
ÆÄ¼ ¸Þ¼Òµå À̿ܿ¡µµ, ÀÌ Å¬·¡½º¿¡´Â ÀϹÝÀûÀÎ 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"
ÀÇ º»¹®À» µðÄÚµåÇÕ´Ï´Ù.