Á¦17Àå Zend_Http

¸ñÂ÷

17.1. Zend_Http_Client - µµÀÔ
17.1.1. µµÀÔ
17.1.2. ¼³Á¤ ÆÄ¶ó¹ÌÅÍ
17.1.3. ±âº»ÀûÀÎ HTTP ¸®Äù½ºÆ®ÀÇ Ã³¸®
17.1.4. GET (ÀÌ)³ª POST ¿¡ÀÇ ÆÄ¶ó¹ÌÅÍÀÇ Ãß°¡
17.1.5. ¹Ù·Î ¿·ÀÇ ¸®Äù½ºÆ®³ª ¸®½ºÆù½º¿¡ÀÇ ¾×¼¼½º
17.2. Zend_Http_Client - °íµµÀÇ »ç¿ë¹ý
17.2.1. HTTP ¸®µð·ºÆ®
17.2.2. ÄíŰÀÇ Ãß°¡ ¹× Áö¼ÓÀûÀÎ ÄíŰÀÇ »ç¿ë
17.2.3. µ¶ÀÚÀûÀÎ ¸®Äù½ºÆ® Çì´õÀÇ ¼³Á¤
17.2.4. ÆÄÀÏÀÇ ¾÷ ·Îµå
17.2.5. »ýÀÇ POST µ¥ÀÌÅÍÀÇ ¼Û½Å
17.2.6. HTTP ÀÎÁõ
17.2.7. µ¿ÀÏ Å¬¶óÀÌ¾ðÆ®·ÎÀÇ º¹¼ö ¸®Äù½ºÆ®ÀÇ ¼Û½Å
17.3. Zend_Http_Client - Á¢¼Ó ¾î´ðÅÍ
17.3.1. °³¿ä
17.3.2. ¼ÒÄÏ ¾î´ðÅÍ
17.3.3. ÇÁ·Ï½Ã ¾î´ðÅÍ
17.3.4. Å×½ºÆ® ¾î´ðÅÍ
17.3.5. µ¶ÀÚÀûÀÎ Á¢¼Ó ¾î´ðÅÍÀÇ ÀÛ¼º
17.4. Zend_Http_Cookie ¹× Zend_Http_CookieJar
17.4.1. µµÀÔ
17.4.2. Zend_Http_Cookie ÀÇ ÀνºÅϽºÀÇ ÀÛ¼º
17.4.3. Zend_Http_Cookie ÀÇ °ÙŸ¸Þ¼Úµå
17.4.4. Zend_Http_Cookie ÇÏÁö¸¸ Á¶°Ç¿¡ ÀÏÄ¡ÇÒ °ÍÀÎÁö ¾î¶²Áö¸¦ Á¶»çÇÑ´Ù
17.4.5. Zend_Http_CookieJar ÀÇ ÀνºÅϽºÀÇ ÀÛ¼º
17.4.6. Zend_Http_CookieJar ¿ÀºêÁ§Æ®¿¡ÀÇ ÄíŰÀÇ Ãß°¡
17.4.7. Zend_Http_CookieJar ¿ÀºêÁ§Æ®·ÎºÎÅÍÀÇ ÄíŰÀÇ Ãëµæ
17.5. Zend_Http_Response
17.5.1. µµÀÔ
17.5.2. ÁøÀ§ üũ¿ëÀÇ ¸Þ¼Òµå
17.5.3. ¾×¼¼½º¿ë ¸Þ¼Òµå±º
17.5.4. Á¤Àû HTTP ¸®½ºÆù½º ÆÄ¼­

17.1. Zend_Http_Client - µµÀÔ

17.1.1. µµÀÔ

Zend_Http_Client (Àº)´Â,Hyper-Text Transfer Protocol (HTTP) ¸®Äù½ºÆ®¸¦ °£´ÜÇÏ°Ô Ãë±ÞÇϱâ À§ÇÑ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÕ´Ï´Ù. Zend_Http_Client (Àº)´Â,HTTP Ŭ¶óÀÌ¾ðÆ®·Î¼­ÀÇ ÃÖÀúÇÑÀÇ ±â´ÉÀ» ¼­Æ÷Æ®Çϰí ÀÖÀ» »Ó¸¸ ¾Æ´Ï¶ó, HTTP ÀÎÁõÀ̳ª ÆÄÀÏÀÇ ¾÷ ·Îµå¶ó°í ÇÑ °íµµÀÇ ±â´Éµµ ¼­Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù. ¸®Äù½ºÆ®¿¡ ¼º°øÇϸé (½ÇÆÐÇØµµ) Zend_Http_Response ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù.À̰ÍÀ» »ç¿ëÇϸé, ¸®½ºÆù½ºÀÇ Çì´õ³ª º»¹®¿¡ ¾×¼¼½º ÇÒ ¼ö ÀÖ½À´Ï´Ù (Ç×17.5. ¡¸Zend_Http_Response¡¹ (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ).

Ŭ·¡½ºÀÇ constructor¡¡ ¡¡ ¿¡´Â, ¿É¼ÇÀÇ Àμö·Î¼­ URL (À»)¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù (¹®ÀÚ¿­Àΰ¡ Zend_Uri_Http ¿ÀºêÁ§Æ®ÀÇ ¾îµð¶óµµ °¡´ÉÇÕ´Ï´Ù). ¶Ç, ¿É¼ÇÀ¸·Î ¼³Á¤ ÆÄ¶ó¹ÌÅÍÀÇ ¹è¿­À» ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¾î´ÀÂÊÀ̳ª »ý·« ÇÏ´Â °ÍÀÌ °¡´ÉÇϰí, ±× °æ¿ì´Â ³ªÁß¿¡ setUri() ¸Þ¼Òµå³ª setConfig() ¸Þ¼Òµå·Î ÁöÁ¤ÇÕ´Ï´Ù.

·Ê 17.1. Zend_Http_Client ÀÇ ÀνºÅϽºÀÇ ÀÛ¼º


<?php
require_once 'Zend/Http/Client.php';
require_once 
'Zend/Http/Client.php';

$client = new Zend_Http_Client('http://example.org', array(
    
'maxredirects' => 0,
    
'timeout'      => 30));

// À̰ÍÀº, À§¿Í ¿ÏÀüÈ÷ °°Àº °ÍÀÔ´Ï´Ù
$client = new Zend_Http_Client();
$client->setUri('http://example.org');
$client->setConfig(array(
    
'maxredirects' => 0,
    
'timeout'      => 30));


17.1.2. ¼³Á¤ ÆÄ¶ó¹ÌÅÍ

constructor¡¡ ¡¡ ¹× setConfig() ¸Þ¼Òµå¿¡¼­´Â ¼³Á¤ ÆÄ¶ó¹ÌÅÍÀÇ ¿¬»ó ¹è¿­À» ¹Þ½À´Ï´Ù. ÀÌ·¯ÇÑ ÆÄ¶ó¹ÌÅÍ´Â, ¼³Á¤Çصµ ÇÏÁö ¾Ê¾Æµµ ±¦Âú½À´Ï´Ù. ¸ðµç ÆÄ¶ó¹ÌÅÍ¿¡´Â µðÆúƮġ°¡ ÀÖ½À´Ï´Ù.

Ç¥ 17.1. Zend_Http_Client ÀÇ ¼³Á¤ ÆÄ¶ó¹ÌÅÍ

ÆÄ¶ó¹ÌÅÍ ¼³¸í ±â´ëÇÏ´Â °ª µðÆúƮġ
maxredirects ¸®µð·ºÆ®¸¦ ´õµë´Â ÃÖ´ë¼ö (0 = ´õµëÁö ¾Ê´Â´Ù) integer 5
strict false (À¸)·Î ¼³Á¤Çϸé, ¸î°³ÀÇ °ËÁõ ÇÔ¼ö¸¦ ½ºÅµ ÇÕ´Ï´Ù.Åë»óÀº À̰ÍÀ» º¯°æ ÇØ¼­´Â ¾ÈµË´Ï´Ù. boolean true
strictredirects ¸®µð·ºÆ® ½Ã¿¡ RFC ¿¡ ¾ö¹ÐÇÏ°Ô µû¸¦Áö (Ç×17.2.1. ¡¸HTTP ¸®µð·ºÆ®¡¹ (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ) boolean false
useragent À¯Àú ¿¡ÀÌÀüÆ®¸¦ ³ªÅ¸³»´Â ¹®ÀÚ¿­ (¸®Äù½ºÆ® Çì´õ¿¡ ºÎ°¡µË´Ï´Ù) string 'Zend_Http_Client'
timeout Á¢¼Ó ŸÀÓ ¾Æ¿ôÃʼö integer 10
httpversion HTTP ÇÁ·ÎÅäÄÝÀÇ ¹öÁ¯ (Åë»óÀº '1.1' ȤÀº '1.0') string '1.1'
adapter »ç¿ëÇÏ´Â Á¢¼Ó ¾î´ðÅÍ Å¬·¡½º (Ç×17.3. ¡¸Zend_Http_Client - Á¢¼Ó ¾î´ðÅÍ¡¹ (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ) mixed 'Zend_Http_Client_Adapter_Socket'
keepalive ¼­¹ö¿ÍÀÇ keep-alive Á¢¼ÓÀ» À¯È¿ÇÏ°Ô ÇÒÁö. µ¿ÀÏ ¼­¹ö¿¡ ¿¬¼ÓÇØ ¸®Äù½ºÆ®°¡ ¹ß»ýÇÏ´Â °æ¿ì µî¿¡ Æí¸®Çϰí, ¼º´ÉÀ» Çâ»ó½Ã۰ÚÁö¿ä. boolean false


17.1.3. ±âº»ÀûÀÎ HTTP ¸®Äù½ºÆ®ÀÇ Ã³¸®

½ÉÇÃÇÑ HTTP ¸®Äù½ºÆ®¸¦ ½ÇÇàÇÏ´Â °ÍÀº ¸Å¿ì °£´ÜÇϰí, ´ÜÁö request() ¸Þ¼Òµå¸¦ ½ÇÇàÇÒ »ÓÀÔ´Ï´Ù.°Ü¿ì 3°³ ÀºÇàÀ¸·Î ÇØ°áµÇ¾î ¹ö¸³´Ï´Ù.

·Ê 17.2. ½ÉÇÃÇÑ GET ¸®Äù½ºÆ®ÀÇ Ã³¸®


<?php
require_once 'Zend/Http/Client.php';

$client = new Zend_Http_Client('http://example.org');
$response $client->request();


request() ¸Þ¼Òµå¿¡´Â, ¿É¼ÇÀ¸·Î ÆÄ¶ó¹ÌÅ͸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÆÄ¶ó¹ÌÅÍ´Â ¸®Äù½ºÆ® ¸Þ¼Òµå·Î,HTTP ÇÁ·ÎÅäÄÝ·Î Á¤Àǵǰí ÀÖ´Ù GET,POST,PUT,HEAD,DELETE,TRACE,OPTIONS ±×¸®°í CONNECT ÀÇ ¾î´ÀÂÊÀ̵çÀ» ÁöÁ¤ °¡´ÉÇÕ´Ï´Ù. [1]. Æí¸®¼ºÀ» ³ôÀ̱â À§ÇØ, À̰͵éÀº ¸ðµÎ Ŭ·¡½º Á¤¼ö·Î¼­ Á¤Àǵǰí ÀÖ½À´Ï´Ù.¿¹¸¦ µé¾î Zend_Http_Request::GET,Zend_Http_Request::POST µî°ú °°ÀÌ µÇ¾î ÀÖ½À´Ï´Ù.

¸Þ¼Òµå¸¦ ÁöÁ¤ÇÏÁö ¾Ê´Â °æ¿ì´Â, ¹Ù·Î ¿·ÀÇ setMethod() ÄÝ·Î ÁöÁ¤µÈ ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù. setMethod() µµ ÄÝ µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì´Â, µðÆúÆ®ÀÇ ¸®Äù½ºÆ® ¸Þ¼Òµå·Î¼­ GET (À»)¸¦ »ç¿ëÇÕ´Ï´Ù (À§ÀÇ ¿¹¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ).

·Ê 17.3. GET ÀÌ¿ÜÀÇ ¸®Äù½ºÆ® ¸Þ¼ÒµåÀÇ »ç¿ë


<?php
// POST ¸®Äù½ºÆ®¸¦ ½ÇÇàÇÕ´Ï´Ù
$response $client->request('POST');

// POST ¸®Äù½ºÆ®¸¦ ½ÇÇàÇϱâ À§ÇÑ ¶Ç ÇϳªÀÇ ¹æ¹ýÀÔ´Ï´Ù
$client->setMethod(Zend_Http_Client::POST);
$response $client->request();


17.1.4. GET (ÀÌ)³ª POST ¿¡ÀÇ ÆÄ¶ó¹ÌÅÍÀÇ Ãß°¡

GET ÆÄ¶ó¹ÌÅ͸¦ HTTP ¸®Äù½ºÆ®¿¡ Ãß°¡ÇÏ´Â °ÍÀº °£´ÜÇÕ´Ï´Ù. URL ÀÇ ÀϺημ­ ÁöÁ¤Çϵ簡, ȤÀº setParameterGet() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå´Â,GET ÆÄ¶ó¹ÌÅÍÀÇ À̸§À» ÃÖÃÊÀÇ Àμö, ±×¸®°í GET ÆÄ¶ó¹ÌÅÍÀÇ °ªÀ» µÎ¹øÂ°ÀÇ Àμö·Î¼­ ¹Þ½À´Ï´Ù. ÇÑÃþ ´õ Æí¸®ÇÏ°Ô »ç¿ëÇϱâ À§ÇØ(¶§¹®¿¡),setParameterGet() ¸Þ¼Òµå¿¡¼­´Â name => value Çü½ÄÀÇ ¿¬»ó ¹è¿­·Î GET º¯¼ö¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. À̰ÍÀº, º¹¼öÀÇ GET ÆÄ¶ó¹ÌÅ͸¦ ÁöÁ¤ÇÒ Çʿ䰡 ÀÖ´Â °æ¿ì¿¡ Æí¸®ÇÕ´Ï´Ù.

·Ê 17.4. GET ÆÄ¶ó¹ÌÅÍÀÇ ¼³Á¤


<?php
// setParameterGet ¸Þ¼Òµå·Î GET ÆÄ¶ó¹ÌÅ͸¦ ÁöÁ¤ÇÕ´Ï´Ù
$client->setParameterGet('knight''lancelot');

// ÀÌ·¯ÇÑ URL (À»)¸¦ ÁöÁ¤ÇÏ´Â °Í°ú °°Àº °ÍÀÔ´Ï´Ù
$client->setUri('http://example.com/index.php?knight=lancelot');

// º¹¼öÀÇ ÆÄ¶ó¹ÌÅ͸¦ ÇÑ ¹ø¿¡ Ãß°¡ÇÕ´Ï´Ù
$client->setParameterGet(array(
    
'first_name'  => 'Bender',
    
'middle_name' => 'Bending'
    'made_in'     
=> 'Mexico',
));


GET ÆÄ¶ó¹ÌÅÍ´Â ¸ðµç ¸®Äù½ºÆ® ¸Þ¼Òµå·Î ¼Û½ÅÇÒ ¼ö ÀÖ½À´Ï´Ù¸¸, POST ÆÄ¶ó¹ÌÅÍ´Â POST ¸®Äù½ºÆ®ÀÇ º»¹®À¸·Î¼­ ¹Û¿¡ ¼Û½ÅÇÒ ¼ö ¾ø½À´Ï´Ù. POST ÆÄ¶ó¹ÌÅ͸¦ ¸®Äù½ºÆ®¿¡ Ãß°¡ÇÏ´Â ¹æ¹ýÀº,GET ÆÄ¶ó¹ÌÅ͸¦ Ãß°¡ÇÏ´Â °æ¿ì¿Í ¸Å¿ì ´à¾Ò½À´Ï´Ù. »ç¿ëÇÏ´Â °ÍÀº setParameterPost() ¸Þ¼Òµå·Î, ÀÌ ¸Þ¼ÒµåÀÇ »ç¿ë¹ýÀº setParameterGet() ¸Þ¼Òµå¿Í °°½À´Ï´Ù.

·Ê 17.5. POST ÆÄ¶ó¹ÌÅÍÀÇ ¼³Á¤


<?php
// POST ÆÄ¶ó¹ÌÅ͸¦ ¼³Á¤ÇÕ´Ï´Ù
$client->setParameterPost('language''fr');

// º¹¼öÀÇ POST ÆÄ¶ó¹ÌÅ͸¦ ¼³Á¤ÇÕ´Ï´Ù.±× ÁßÀÇ Çϳª´Â º¹¼öÀÇ °ªÀ» °¡Áý´Ï´Ù.
$client->setParameterPost(array(
    
'language'  => 'es',
    
'country'   => 'ar',
    
'selection' => array(453280)
));


POST ¸®Äù½ºÆ®¸¦ ¼Û½ÅÇÒ ¶§ ,GET ÆÄ¶ó¹ÌÅÍ¿Í POST ÆÄ¶ó¹ÌÅÍÀÇ ¾çÂÊ ¸ðµÎ¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Â °Í¿¡ ÁÖÀÇÇսôÙ. ÇÑÆí,POST ÆÄ¶ó¹ÌÅ͸¦ POST ÀÌ¿ÜÀÇ ¸®Äù½ºÆ®·Î ÁöÁ¤Çصµ ¾î¶² ¿¡·¯µµ ¹ß»ýÇÏÁö ¾Ê½À´Ï´Ù¸¸, À̰ÍÀº ¹«ÀǹÌÇÕ´Ï´Ù.POST ÀÌ¿ÜÀÇ ¸®Äù½ºÆ®¿¡¼­´Â, POST ÆÄ¶ó¹ÌÅ͸¦ ÁöÁ¤Çصµ ¹«½ÃµË´Ï´Ù.

17.1.5. ¹Ù·Î ¿·ÀÇ ¸®Äù½ºÆ®³ª ¸®½ºÆù½º¿¡ÀÇ ¾×¼¼½º

Zend_Http_Client ±×·³, ±× Ŭ¶óÀÌ¾ðÆ® ¿ÀºêÁ§Æ®°¡ ¹Ù·Î ¿·¿¡ ¼Û½ÅÇÑ ¸®Äù½ºÆ® ¹× ¹Ù·Î ¿·¿¡ ¼ö½ÅÇÑ ¸®½ºÆù½º¿¡ ¾×¼¼½ºÇϱâ À§ÇÑ ¸Þ¼Òµå¸¦ Á¦°øÇϰí ÀÖ½À´Ï´Ù. Zend_Http_Client->getLastRequest() (Àº)´Â ¾Æ¹«°Íµµ ÆÄ¶ó¹ÌÅ͸¦ ¹ÞÁö ¾Ê°í, Ŭ¶óÀÌ¾ðÆ®°¡ ¹Ù·Î ¿·¿¡ ¼Û½ÅÇß´Ù HTTP ¸®Äù½ºÆ®¸¦ ¹®ÀÚ¿­·Î µ¹·ÁÁÝ´Ï´Ù.ÀÌ¿Í °°ÀÌ Zend_Http_Client->getLastResponse() (Àº)´Â, Ŭ¶óÀÌ¾ðÆ®°¡ ¹Ù·Î ¿·¿¡ ¼ö½ÅÇß´Ù HTTP ¸®½ºÆù½º¸¦ Zend_Http_Response ¿ÀºêÁ§Æ®·Î µ¹·ÁÁÝ´Ï´Ù.



[1] RFC 2616 - http://www.w3.org/Protocols/rfc2616/rfc2616.html (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.