¸ñÂ÷
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));
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 |
½ÉÇÃÇÑ 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();
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(45, 32, 80)
));
POST ¸®Äù½ºÆ®¸¦ ¼Û½ÅÇÒ ¶§ ,GET ÆÄ¶ó¹ÌÅÍ¿Í POST
ÆÄ¶ó¹ÌÅÍÀÇ ¾çÂÊ ¸ðµÎ¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Â °Í¿¡ ÁÖÀÇÇսôÙ.
ÇÑÆí,POST ÆÄ¶ó¹ÌÅ͸¦ POST ÀÌ¿ÜÀÇ ¸®Äù½ºÆ®·Î ÁöÁ¤Çصµ ¾î¶² ¿¡·¯µµ ¹ß»ýÇÏÁö ¾Ê½À´Ï´Ù¸¸,
À̰ÍÀº ¹«ÀǹÌÇÕ´Ï´Ù.POST ÀÌ¿ÜÀÇ ¸®Äù½ºÆ®¿¡¼´Â,
POST ÆÄ¶ó¹ÌÅ͸¦ ÁöÁ¤Çصµ ¹«½ÃµË´Ï´Ù.
Zend_Http_Client ±×·³, ±× Ŭ¶óÀÌ¾ðÆ® ¿ÀºêÁ§Æ®°¡
¹Ù·Î ¿·¿¡ ¼Û½ÅÇÑ ¸®Äù½ºÆ® ¹×
¹Ù·Î ¿·¿¡ ¼ö½ÅÇÑ ¸®½ºÆù½º¿¡ ¾×¼¼½ºÇϱâ À§ÇÑ ¸Þ¼Òµå¸¦ Á¦°øÇϰí ÀÖ½À´Ï´Ù.
Zend_Http_Client->getLastRequest()
(Àº)´Â ¾Æ¹«°Íµµ ÆÄ¶ó¹ÌÅ͸¦ ¹ÞÁö ¾Ê°í, Ŭ¶óÀÌ¾ðÆ®°¡ ¹Ù·Î ¿·¿¡ ¼Û½ÅÇß´Ù
HTTP ¸®Äù½ºÆ®¸¦ ¹®ÀÚ¿·Î µ¹·ÁÁÝ´Ï´Ù.ÀÌ¿Í °°ÀÌ
Zend_Http_Client->getLastResponse()
(Àº)´Â,
Ŭ¶óÀÌ¾ðÆ®°¡ ¹Ù·Î ¿·¿¡ ¼ö½ÅÇß´Ù HTTP ¸®½ºÆù½º¸¦
Zend_Http_Response
¿ÀºêÁ§Æ®·Î µ¹·ÁÁÝ´Ï´Ù.