Zend_Http_Client (Àº)´Â, Á¢¼Ó ¾î´ðÅͷμ ¼³°èµÇ°í ÀÖ½À´Ï´Ù. Á¢¼Ó ¾î´ðÅÍ´Â ½ÇÁ¦·Î ¼¹ö¿¡ÀÇ Á¢¼ÓÀ» ½Ç½ÃÇÏ´Â ¿ÀºêÁ§Æ®·Î, ¸®Äù½ºÆ®³ª ¸®½ºÆù½ºÀÇ Ã³¸®µµ ½Ç½ÃÇÕ´Ï´Ù. ÀÌ Á¢¼Ó ¾î´ðÅÍ´Â ¿Å°Ü³õÀ» ¼ö ÀÖ½À´Ï´Ù. Áï, µðÆúÆ®ÀÇ Á¢¼Ó ¾î´ðÅ͸¦ °è½ÂÇØ ÀÚ½ÅÀÇ ÃëÇâ¿¡ ¸Âµµ·Ï(µíÀÌ) º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. HTTP Ŭ¶óÀÌ¾ðÆ® Å¬·¡½º Àüü¸¦ °íÃÄ ¾µ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. °°Àº ÀÎÅÍÆäÀ̽º¸¦ ½ÇÀåÇϰí ÀÖ´Â °Í¸¸À¸·Î ÁÁ½À´Ï´Ù.
ÇöÀç,Zend_Http_Client Ŭ·¡½º´Â ¼¼ °³ÀÇ ÆíÀÔ Á¢¼Ó ¾î´ðÅ͸¦ Á¦°øÇϰí ÀÖ½À´Ï´Ù.
Zend_Http_Client_Adapter_Socket
( µðÆúÆ®)
Zend_Http_Client_Adapter_Proxy
Zend_Http_Client_Adapter_Test
Zend_Http_Client ¿ÀºêÁ§Æ®ÀÇ Á¢¼Ó ¾î´ðÅ͸¦ ÁöÁ¤ÇÏ·Á¸é , ¼³Á¤ ¿É¼Ç 'adapter' (À»)¸¦ »ç¿ëÇÕ´Ï´Ù. Ŭ¶óÀ̾ðÆ®
¿ÀºêÁ§Æ®ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÒ ¶§¿¡, ¿É¼Ç 'adapter' ¿¡ ¾î´ðÅÍÀÇ À̸§ ( ¿¹¸¦ µé¾î 'Zend_Http_Client_Adapter_Socket'
µî) (À»)¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.ȤÀº, ¾î´ðÅÍ ¿ÀºêÁ§Æ®ÀÇ º¯¼ö ( ¿¹¸¦ µé¾î new Zend_Http_Client_Adapter_test
µî)
(À»)¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. Zend_Http_Client->setConfig() ¸Þ¼Òµå¸¦ »ç¿ëÇØ, ¾î´ðÅ͸¦ ´ÙÀ½¿¡ ¼³Á¤ÇÏ´Â
°Íµµ °¡´ÉÇÕ´Ï´Ù.
µðÆúÆ®ÀÇ Á¢¼Ó ¾î´ðÅÍ´Â Zend_Http_Client_Adapter_Socket ÀÔ´Ï´Ù.¸í½ÃÀûÀ¸·Î Á¢¼Ó ¾î´ðÅ͸¦ ÁöÁ¤ÇÏÁö ¾Ê´Â °æ¿ì´Â, À̰ÍÀÌ »ç¿ëµË´Ï´Ù. Socket ¾î´ðÅÍ´Â PHP ÀÇ ÆíÀÔ ÇÔ¼ö fsockopen() (À»)¸¦ »ç¿ëÇϰí ÀÖ¾î, Ưº°ÇÑ È®Àå ¸ðµâÀ̳ª ÄÄÆÄÀÏ ¿É¼ÇÀº ÇÊ¿ä ¾ø½À´Ï´Ù.
¼ÒÄÏ ¾î´ðÅÍ¿¡¼´Â, µ¶ÀÚÀûÀÎ ¼³Á¤ ¿É¼Ç 'ssltransport'
ÇÏÁö¸¸ ÁöÁ¤ÇÒ
¼ö ÀÖ½À´Ï´Ù (Zend_Http_Client->setConfig()
¿¡ °Ç³×Áֵ簡,
ȤÀº constructor¡¡ ¡¡ À¸·Î ¼³Á¤ÇÕ´Ï´Ù) . ÀÌ ÆÄ¶ó¹ÌÅÍ´Â ¹®ÀÚ¿·Î, µðÆúÆ®´Â 'sslv2' µË´Ï´Ù. À̰ÍÀ» º¯°æÇϸé,HTTPS
Á¢¼Ó¿¡ »ç¿ëÇÏ´Â ½ºÆ®¸² Æ®·£½ºÆ÷Æ®ÃþÀÌ º¯°æµË´Ï´Ù. ÀÚÁÖ(Àß) »ç¿ëÇÏ´Â °ªÀº 'ssl' ,'sslv2' ,'sslv3' ¹× 'tls'
ÀÔ´Ï´Ù.À̿ܿ¡µµ, PHP ÇÏÁö¸¸ ¼Æ÷Æ®Çϰí ÀÖ´Â ½ºÆ®¸² Æ®·£½ºÆ÷Æ®ÃþÀ̶ó¸é ¾î¶² °Í¿¡¼µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª, °á°ú°¡ ¿¹±âÄ¡
¸øÇÑ °ÍÀÌ µÉÁöµµ ¸ð¸¨´Ï´Ù.ÀÌ¿ÜÀÇ °ªÀ» »ç¿ëÇÏ´Â °æ¿ì¿¡´Â, ±×°ÍÀÌ ¹«¾ùÀ» ÀǹÌÇÏ´ÂÁö¸¦ È®½ÇÈ÷ ÆÄ¾ÇÇÑ ´ÙÀ½ »ç¿ëÇϵµ·Ï ÇսôÙ. [2].
·Ê 13.15. HTTPS Æ®·£½ºÆ÷Æ®ÃþÀÇ º¯°æ
<?php
//
¼³Á¤ ÆÄ¶ó¹ÌÅ͸¦ ÁöÁ¤ÇÕ´Ï´Ù
$config = array(
'adapter' => 'Zend_Http_Client_Adapter_Socket',
'ssltransport' => 'tls'
);
//
Ŭ¶óÀÌ¾ðÆ® ¿ÀºêÁ§Æ®ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù
$client = Zend_Http_Client('https://www.example.com', $config);
//
ÀÌ ÀÌÈÄÀÇ ¸®Äù½ºÆ®´Â,TLS
½ÃÅ¥¾î Á¢¼Ó»ó¿¡¼ ÇàÇØÁý´Ï´Ù
$response = $client->request();
?>
À§ÀÇ ¿¹ÀÇ °á°ú´Â, ´ÙÀ½ÀÇ PHP Ä¿¸àµå·Î TCP Á¢¼ÓÀ» ¿ÀÇÂÇßÀ» °æ¿ì¿Í °°°Ô µË´Ï´Ù.
fsockopen('tls://www.example.com', 443)
Zend_Http_Client_Adapter_Proxy ¾î´ðÅÍ´Â µðÆúÆ®ÀÇ ¼ÒÄÏ ¾î´ðÅÍ¿Í °ÅÀÇ °°½À´Ï´Ù. ´Ù¸¸, ´ë»óÀÌ µÇ´Â ¼¹ö¿¡ Á÷Á¢ Á¢¼ÓÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó HTTP ÇÁ·Ï½Ã ¼¹ö¸¦ °æÀ¯ÇØ Á¢¼ÓÇÑ´Ù°í ÇÏ´Â Á¡ÀÌ ´Ù¸¨´Ï´Ù. À̰Ϳ¡ ÀÇÇØ,Zend_Http_Client (À»)¸¦ ÇÁ·Ï½Ã ¼¹öÁß¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ½ÃÅ¥·¯Æ¼³ª ÆÛÆ÷¸Õ½º»óÀÇ ÀÌÀ¯¿¡ ÀÇÇØ, À̰ÍÀÌ ÇÊ¿äÇÑ °æ¿ìµµ ÀÖ°ÚÁö¿ä.
ÇÁ·Ï½Ã ¾î´ðÅ͸¦ »ç¿ëÇÏ·Á¸é , µðÆúÆ®ÀÇ 'adapter' ¿É¼Ç À̿ܿ¡ ¸î°³Àΰ¡ Ãß°¡ÀÇ ÆÄ¶ó¹ÌÅ͸¦ ¼³Á¤ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
Ç¥ 13.2. Zend_Http_Client ÀÇ ¼³Á¤ ÆÄ¶ó¹ÌÅÍ
ÆÄ¶ó¹ÌÅÍ | ¼³¸í | »óÁ¤Çϰí ÀÖ´Â ÇüÅ | °ªÀÇ ¿¹ |
---|---|---|---|
proxy_host | ÇÁ·Ï½Ã ¼¹öÀÇ ÁÖ¼Ò | string | 'proxy.myhost.com' ȤÀº '10.1.2.3' |
proxy_port | ÇÁ·Ï½Ã ¼¹öÀÇ TCP Æ÷Åä | integer | 8080 ( µðÆúÆ®) ȤÀº 81 |
proxy_user | Çʿ信 µû¶ó¼, ÇÁ·Ï½ÃÀÇ À¯Àú¸í | string | 'shahar' ȤÀº ÁöÁ¤ÇÏÁö ¾Ê´Â °æ¿ì´Â '' ( µðÆúÆ®) |
proxy_pass | Çʿ信 µû¶ó¼, ÇÁ·Ï½ÃÀÇ ÆÐ½º¿öµå | string | 'secret' ȤÀº ÁöÁ¤ÇÏÁö ¾Ê´Â °æ¿ì´Â '' ( µðÆúÆ®) |
proxy_auth | ÇÁ·Ï½ÃÀÇ HTTP ÀÎÁõ Çü½Ä | string | Zend_Http_Client::AUTH_BASIC ( µðÆúÆ®) |
proxy_host (Àº)´Â Ç×»ó ¼³Á¤ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ø °æ¿ì´Â, ÀÚµ¿ÀûÀ¸·Î Zend_Http_Client_Adapter_Socket ¿¡ ÀÇÇÑ Á÷Á¢ Á¢¼Ó¿¡ ¹Ù²ò´Ï´Ù. proxy_port ÀÇ µðÆúÆ®´Â '8080' ÀÔ´Ï´Ù.¸¸¾à ´Ù¸¥ Æ÷Å並 ÇÁ·Ï½Ã·Î »ç¿ëÇϰí ÀÖ´Â °æ¿ì´Â, ÀûÀýÈ÷ ¼³Á¤ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
proxy_user ¹× proxy_pass (Àº)´Â, ÇÁ·Ï½Ã ¼¹ö°¡ ÀÎÁõÀ» ÇÊ¿ä·Î ÇÏ´Â °æ¿ì¿¡°Ô¸¸ ¼³Á¤ÇÕ´Ï´Ù. À̰͵éÀ» ÁöÁ¤Çϸé,'Proxy-Authentication' Çì´õ°¡ ¸®Äù½ºÆ®¿¡ Ãß°¡µË´Ï´Ù.ÇÁ·Ï½Ã·Î ÀÎÁõÀ» ÇÊ¿ä·Î ÇÏÁö ¾Ê´Â °æ¿ì´Â, ÀÌ µÎ ¿É¼ÇÀº ±×´ë·Î ÇØ µÓ´Ï´Ù.
proxy_auth (Àº)´Â, ÇÁ·Ï½Ã°¡ ÀÎÁõÀ» ÇÊ¿ä·Î Çϰí ÀÖ´Â °æ¿ì¿¡, ±× ÀÎÁõ Çü½ÄÀ» ÁöÁ¤ÇÕ´Ï´Ù.¼³Á¤ÇÒ ¼ö ÀÖ´Â °ªÀº Zend_Http_Client::setAuth() ¸Þ¼Òµå¿Í °°½À´Ï´Ù.ÇöÀç´Â º£ÀÌÁ÷ ÀÎÁõ (Zend_Http_Client::AUTH_BASIC) ¸¸À» ¼Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù.
·Ê 13.16. ÇÁ·Ï½Ã ¼¹ö¸¦ »ç¿ëÇß´Ù Zend_Http_Client ÀÇ »ç¿ë¹ý
<?php
//
Á¢¼Ó ÆÄ¶ó¹ÌÅ͸¦ ¼³Á¤ÇÕ´Ï´Ù
$config = array(
'adapter' => 'Zend_Http_Client_Adapter_Proxy',
'proxy_host' => 'proxy.int.zend.com',
'proxy_port' => 8000,
'proxy_user' => 'shahar.e',
'proxy_pass' => 'bananashaped'
);
//
Ŭ¶óÀÌ¾ðÆ® ¿ÀºêÁ§Æ®ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù
$client = Zend_Http_Client('http://www.example.com', $config);
//
ÀÛ¾÷À» °è¼ÓÇÕ´Ï´Ù...
?>
¼³¸íÇß´ø ´ë·Î, ¸¸¾à proxy_host (À»)¸¦ »ý·« Çϰųª °ø¹®ÀÚ¿À» ¼³Á¤Çϰųª Çϸé, ÀÚµ¿ÀûÀ¸·Î Á÷Á¢ Á¢¼Ó¿¡ ¹Ù²ò´Ï´Ù.À̰Ϳ¡ ÀÇÇØ, ¼³Á¤ ÆÄ¶ó¹ÌÅÍ¿¡ ÀÇÇØ¼ ¿É¼ÇÀ¸·Î ÇÁ·Ï½Ã¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ¾îÇø®ÄÉÀ̼ÇÀ» ¾²´Â °ÍÀÌ °¡´ÉÇØÁý´Ï´Ù.
HTTP Á¢¼Ó¿¡ ÀÇÁ¸ÇÏ´Â Å×½ºÆ® Äڵ带 ¾²´Â °ÍÀº ¸Å¿ì ¾î·Á¿î °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ¸®¸ðÆ® ¼¹ö·ÎºÎÅÍ RSS (À»)¸¦ ÃëµæÇÏ´Â ¾îÇø®ÄÉÀ̼ÇÀ» Å×½ºÆ®ÇÏ·Á¸é , ³×Æ®¿öÅ©·Î ¿¬°áµÇ¾î ÀÖÀ» Çʿ䰡 ÀÖ½À´Ï´Ù.Ç×»ó ³×Æ®¿öÅ©¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù°í´Â ÇÒ ¼ö ¾ø½À´Ï´Ù.
ÀÌ·¯ÇÑ ¶§¸¦ À§Çؼ ÀÖ´Â °ÍÀÌ Zend_Http_Client_Adapter_Test ¾î´ðÅÍÀÔ´Ï´Ù. Zend_Http_Client (À»)¸¦ »ç¿ëÇÏ´Â ¾îÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇØ, ±×°ÍÀ» Å×½ºÆ®ÇÏ°í ½ÍÀº °æ¿ì¿¡´Â, µðÆúÆ®ÀÇ ¾î´ðÅ͸¦ Test ¾î´ðÅÍ ( ¸ñÅ©¿ÀºêÁ¦Å©Æ®) (À¸)·Î º¯°æÇÕ´Ï´Ù. À̰ÍÀ¸·Î, ¼¹ö¿¡ Á¢¼ÓÇÏÁö ¾Ê°í Å×½ºÆ®¸¦ ½Ç½ÃÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.
Zend_Http_Client_Adapter_Test ¿¡´Â setResponse() ±×·¸´Ù°í ÇÏ´Â ¸Þ¼Òµå°¡ ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼ÒµåÀÇ ÆÄ¶ó¹ÌÅÍ¿¡´Â,HTTP ¸®½ºÆù½º¸¦ ÅØ½ºÆ®Àΰ¡ Zend_Http_Response ¿ÀºêÁ§Æ®·Î ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸®½ºÆù½º¸¦ ¼³Á¤Çϸé,Test ¾î´ðÅÍ´Â Ç×»ó ÀÌ ¸®½ºÆù½º¸¦ µ¹·ÁÁÖ°Ô µË´Ï´Ù. ½ÇÁ¦ÀÇ HTTP ¸®Äù½ºÆ®´Â ½Ç½ÃÇÏÁö ¾Ê½À´Ï´Ù.
·Ê 13.17. HTTP ¸®½ºÆù½º ±×·çÅͱ⸦ »ç¿ëÇÑ Å×½ºÆ®
<?php
//
»õ·Î¿î ¾î´ðÅÍ¿Í Å¬¶óÀ̾ðÆ®ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù
$adapter = new Zend_Http_Client_Adapter_Test();
$client = Zend_Http_Client('http://www.example.com', array(
'adapter' => $adapter
));
//
»óÁ¤ÇÏ´Â ¸®½ºÆù½º¸¦ ¼³Á¤ÇÕ´Ï´Ù
$adapter->setResponse(
"HTTP/1.1 200 OK" . "rn" .
"Content-type: text/xml" . "rn" .
"rn" .
'<?xml version="1.0" encoding="UTF-8"?>' .
'<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"' .
' xmlns:wfw="http://wellformedweb.org/CommentAPI/"' .
' xmlns:dc="http://purl.org/dc/elements/1.1/">' .
' <channel>' .
' <title>Premature Optimization</title>' .
//
µî µî...
'</rss>');
$response = $client->request('GET');
// .. $response
ÀÇ Ã³¸®¸¦ °è¼ÓÇÕ´Ï´Ù...
?>
À§ÀÇ ¿¹ÀÇ °°°Ô Çϸé,HTTP Ŭ¶óÀÌ¾ðÆ®¿¡ ¼Ò¸ÁÀÇ ¸®½ºÆù½º¸¦ µ¹·ÁÁÖ°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× ¶§¿¡ ³×Æ®¿öÅ© Á¢¼ÓÀº »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù.¶Ç, ½ÇÁ¦ÀÇ ¼¹ö·ÎºÎÅÍÀÇ ¸®½ºÆù½ºµµ »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ °æ¿ì, ÀÌ Å×½ºÆ®·Î Å×½ºÆ®ÇÏ´Â °ÍÀº, ¸®½ºÆù½º º»¹®ÀÇ XML (À»)¸¦ ¾îÇø®ÄÉÀ̼ÇÀÌ ¿Ã¹Ù¸£°Ô ÆÛ½º ÇÒ ¼ö ÀÖÀ»±î ÇÏ´Â °ÍÀÔ´Ï´Ù.
½Ã°£¿¡´Â, ¿ÀºêÁ§Æ®¿¡ ´ëÇÑ ÇϳªÀÇ ¸Þ¼Òµå È£Ãâ Áß(¾È)¿¡¼ º¹¼öÀÇ HTTP Æ®·£Àè¼Ç(transaction)¸¦ ½Ç½ÃÇϱ⵵ ÇϰÚÁö¿ä.±×·¯ÇÑ °æ¿ì´Â setResponse() (À»)¸¦ ´Üµ¶À¸·Î »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.¿Ö³ÄÇϸé, °á°ú°¡ È£ÃâÇØ ¹ÙÅÁÀ¸·Î µÇµ¹¾Æ ¿Ã ¶§±îÁö ´ÙÀ½ÀÇ ¸®½ºÆù½º¸¦ ¼³Á¤ÇÒ ¼ö ¾ø±â ¶§¹®ÀÔ´Ï´Ù.
·Ê 13.18. º¹¼öÀÇ HTTP ¸®½ºÆù½º ±×·çÅͱ⸦ »ç¿ëÇÑ Å×½ºÆ®
<?php
//
»õ·Î¿î ¾î´ðÅÍ ¹× Ŭ¶óÀ̾ðÆ®ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù
$adapter = new Zend_Http_Client_Adapter_Test();
$client = Zend_Http_Client('http://www.example.com', array(
'adapter' => $adapter
));
//
ÃÖÃÊÀÇ ÀÀ´äÀ¸·Î¼ ±â´ëÇÏ´Â °ªÀ» ¼³Á¤ÇÕ´Ï´Ù
$adapter->setResponse(
"HTTP/1.1 302 Found" . "rn" .
"Location: /" . "rn" .
"Content-Type: text/html" . "rn" .
"rn" .
'<html>' .
' <head><title>Moved</title></head>' .
' <body><p>This page has moved.</p></body>' .
'</html>');
//
°Å±â¿¡ °è¼Ó µÇ´Â ¸®½ºÆù½º¸¦ ¼³Á¤ÇÕ´Ï´Ù
$adapter->addResponse(
"HTTP/1.1 200 OK" . "rn" .
"Content-Type: text/html" . "rn" .
"rn" .
'<html>' .
' <head><title>My Pet Store Home Page</title></head>' .
' <body><p>...</p></body>' .
'</html>');
// HTTP
Ŭ¶óÀÌ¾ðÆ® ¿ÀºêÁ§Æ® ($client)
(À»)¸¦ Å×½ºÆ® ´ë»óÀÇ
//
¿ÀºêÁ§Æ®¿¡ ÁÖÀÔÇØ, ¿ÀºêÁ§Æ®ÀÇ ¿òÁ÷ÀÓÀ» ÀÌÇÏ·Î Å×½ºÆ®ÇÕ´Ï´Ù
?>
setResponse() ¸Þ¼Òµå´Â, Zend_Http_Client_Adapter_Test ÀÇ ¹öÆÛ¿¡ ÀÖ´Â ¸®½ºÆù½º¸¦ ¸ðµÎ »èÁ¦ÇØ, ÃÖÃÊ·Î µ¹·ÁÁÖ¾îÁö´Â ¸®½ºÆù½º¸¦ ¼³Á¤ÇÕ´Ï´Ù.addResponse() ¸Þ¼Òµå´Â, °Å±â¿¡ °è¼Ó µÇ´Â ¸®½ºÆù½º¸¦ Ãß°¡ÇÕ´Ï´Ù.
¸®½ºÆù½º´Â, ±×°ÍÀ» Ãß°¡ÇÑ ¼ø¼¿¡ Àç»ýµË´Ï´Ù. µî·ÏÇß´ø °Íº¸´Ùµµ ¸¹Àº ¸®Äù½ºÆ®°¡ ¹ß»ýÇßÀ» °æ¿ì´Â, µ¹·ÁÁÖ¾îÁö´Â ¸®½ºÆù½º´Â ÃÖÃÊÀÇ °ÍÀ¸·Î µ¹¾Æ¿Í, °Å±â·ÎºÎÅÍ ¶Ç ¼ø¼¿¡ µ¹·ÁÁÖ¾îÁö°Ô µË´Ï´Ù.
À§ÀÇ ¿¹·Î, ÀÌ ¾î´ðÅͰ¡ Å×½ºÆ®Çϵµ·Ï(µíÀÌ) ¼³Á¤µÇ¾î ÀÖ´Â °ÍÀº, 302 ¸®µð·ºÆ®°¡ ¹ß»ýÇßÀ» °æ¿ìÀÇ ¿ÀºêÁ§Æ®ÀÇ °Åµ¿ÀÔ´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀÇ ³»¿ë¿¡ ÀÇÇØ¼, ¸®µð·ºÆ® ½ÃÄÑ¾ß ÇÏ´Â °ÍÀΰ¡ ±×·¸Áö ¾ÊÀº °ÍÀÎÁö´Â ´Ù¸£°ÚÁö¿ä. ÀÌ ¿¹¿¡¼´Â ¸®µð·ºÆ® ½ÃŰ´Â °ÍÀ» »óÁ¤Çϰí ÀÖÀ¸¹Ç·Î, Å×½ºÆ® ¾î´ðÅ͵µ °Å±â¿¡ ¾Æ¿ï·¯ ¼³Á¤ÇØ ÀÖ½À´Ï´Ù. ÃÖÃÊÀÇ 302 ¸®½ºÆù½º¸¦ setResponse() ¸Þ¼Òµå·Î ¼³Á¤ÇØ, ´ÙÀ½¿¡ µ¹·ÁÁÖ¾îÁø´Ù 200 ¸®½ºÆù½º¸¦ addResponse() ¸Þ¼Òµå·Î ¼³Á¤ÇÕ´Ï´Ù. Å×½ºÆ® ¾î´ðÅ͸¦ ¼³Á¤ ³¡¸¶Ä¡¸é, ±× ¾î´ðÅ͸¦ Æ÷ÇÔÇÑ´Ù HTTP Ŭ¶óÀÌ¾ðÆ®¸¦ Å×½ºÆ® ´ë»ó ¿ÀºêÁ§Æ®¿¡ ÁÖÀÔÇØ, ±× °Åµ¿À» Å×½ºÆ®ÇÕ´Ï´Ù.
µ¶ÀÚÀûÀÎ Á¢¼Ó ¾î´ðÅ͸¦ ÀÛ¼ºÇØ, ±×°ÍÀ» »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î Áö¼ÓÀûÀÎ ¼ÒÄÏÀ» »ç¿ëÇÏ´Â ¾î´ðÅ͸¦ ÀÛ¼ºÇϰųª ij½¬ ±â´ÉÀ» Ãß°¡ÇÑ ¾î´ðÅ͸¦ ÀÛ¼ºÇϰųª, ÀÛ¼ºÇÏ´Â ¾îÇø®ÄÉÀ̼ÇÀÇ ¿ä°Ç¿¡ ¸ÂÃá °ÍÀ» ÀÛ¼ºÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù.
±×·¯±â À§Çؼ´Â,Zend_Http_Client_Adapter_Interface (À»)¸¦ ½ÇÀåÇÑ Å¬·¡½º¸¦ ÀÛ¼ºÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌÇÏÀÇ ¿¹´Â, À¯Àú Á¤ÀÇÀÇ ¾î´ðÅÍ Å¬·¡½ºÀÇ ¾ç½ÄÀÌ µË´Ï´Ù. ÀÌ ¿¹·Î Á¤ÀÇ ¶°³¯ ¼ö ÀÖ¾î ¸ðµç ÆÛºí¸¯ ÇÔ¼ö¸¦, ¾î´ðÅÍ·Î Á¤ÀÇÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
·Ê 13.19. µ¶ÀÚÀûÀÎ Á¢¼Ó ¾î´ðÅÍÀÇ ÀÛ¼º
<?php
class MyApp_Http_Client_Adapter_BananaProtocol implements Zend_Http_Client_Adapter_Interface
{
/**
*
¾î´ðÅÍÀÇ ¼³Á¤ ¹è¿À» ¼³Á¤ÇÑ´Ù
*
* @param array $config
*/
public function setConfig($config = array())
{
//
¿©±â´Â °ÅÀÇ º¯°æÇÒ °ÍÀº ¾ø½À´Ï´Ù -
//
Åë»óÀº Zend_Http_Client_Adapter_Socket
ÀÇ ½ÇÀåÀ» Ä«ÇÇÇÕ´Ï´Ù
}
/**
*
¸®¸ðÆ® ¼¹ö¿¡ Á¢¼ÓÇÑ´Ù
*
* @param string $host
* @param int $port
* @param boolean $secure
*/
public function connect($host, $port = 80, $secure = false)
{
//
¸®¸ðÆ® ¼¹ö¿ÍÀÇ Á¢¼ÓÀ» È®¸³ÇÕ´Ï´Ù
}
/**
*
¸®Äù½ºÆ®¸¦ ¸®¸ðÆ® ¼¹ö¿¡ ¼Û½ÅÇÑ´Ù
*
* @param string $method
* @param Zend_Uri_Http $url
* @param string $http_ver
* @param array $headers
* @param string $body
* @return string Request as text
*/
public function write($method, $url, $http_ver = '1.1', $headers = array(), $body = '')
{
//
¸®Äù½ºÆ®¸¦ ¸®¸ðÆ® ¼¹ö¿¡ ¼Û½ÅÇÕ´Ï´Ù.
//
ÀÌ ÇÔ¼ö´Â, ¸®Äù½ºÆ® Àüü (
Çì´õ ¹× º»¹®)
(À»)¸¦ ¹®ÀÚ¿·Î µ¹·ÁÁÝ´Ï´Ù.
}
/**
*
¼¹ö·ÎºÎÅÍÀÇ ¸®½ºÆù½º¸¦ ÀоîµéÀδÙ
*
* @return string
*/
public function read()
{
//
¸®¸ðÆ® ¼¹ö·ÎºÎÅÍÀÇ ¸®½ºÆù½º¸¦ Àоîµé¿©, ±×°ÍÀ» ¹®ÀÚ¿·Î µ¹·ÁÁÝ´Ï´Ù.
}
/**
*
¼¹ö¿ÍÀÇ Á¢¼ÓÀ» ´Ý´Â´Ù
*
*/
public function close()
{
//
¸®¸ðÆ® ¼¹ö¿ÍÀÇ Á¢¼ÓÀ» ´Ý½À´Ï´Ù.¸¶Áö¸·¿¡ ÄÝ µË´Ï´Ù.
}
}
//
±×¸®°í, ÀÌ ¾î´ðÅ͸¦ »ç¿ëÇÕ´Ï´Ù
$client = new Zend_Http_Client(array(
'adapter' => 'MyApp_Http_Client_Adapter_BananaProtocol'
));
[2] PHP ¸Þ´º¾óÀÇ ºÎ·Ï O ¿¡, ¼Æ÷Æ®µÇ´Â ¼ÒÄÏ Æ®·£½ºÆ÷Æ®ÀÇ À϶÷ÀÌ ÀÖ½À´Ï´Ù. http://www.php.net/manual/en/transports.php