13.2. Zend_Http_Client - °íµµÀÇ »ç¿ë¹ý

13.2.1. HTTP ¸®µð·ºÆ®

µðÆúÆ®¿¡¼­´Â,Zend_Http_Client (Àº)´Â ÀÚµ¿ÀûÀ¸·Î 5´Ü°è±îÁöÀÇ HTTP ¸®µð·ºÆ®¸¦ ó¸®ÇÕ´Ï´Ù.À̰ÍÀ» º¯°æÇÏ·Á¸é , ¼³Á¤ ÆÄ¶ó¹ÌÅÍ 'maxredirects' (À»)¸¦ º¯°æÇÕ´Ï´Ù.

HTTP/1.1 ÀÇ RFC ¿¡ ÀÇÇϸé,HTTP 301 ¹× 302 ¸®½ºÆù½º¸¦ ¹ÞÀº Ŭ¶óÀÌ¾ðÆ®´Â, ÁöÁ¤µÈ Àå¼Ò¿¡ °°Àº ¸®Äù½ºÆ®¸¦ Àç¹ß¼ÛÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌ ¶§¿¡´Â °°Àº ¸®Äù½ºÆ® ¸Þ¼Òµå¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ±×·¯³ª, ´ëºÎºÐÀÇ Å¬¶óÀÌ¾ðÆ®´Â ÀÌ ±â´ÉÀ» ½ÇÀåÇϰí ÀÖÁö ¾Ê°í, ¸®µð·ºÆ® ½Ã¿¡´Â Ç×»ó GET ¸Þ¼Òµå¸¦ »ç¿ëÇÏ°Ô µÇ¾î ÀÖ½À´Ï´Ù. µðÆúÆ®¿¡¼­´Â,Zend_Http_Client µµ ¶È°°ÀÌ µ¿ÀÛÇÕ´Ï´Ù. Áï,301 (ÀÌ)³ª 302 ¿¡ ÀÇÇÑ ¸®µð·ºÆ® Áö½Ã¸¦ ¹ÞÀ¸¸é, GET ÆÄ¶ó¹ÌÅͳª POST ÆÄ¶ó¹ÌÅ͸¦ ¸ðµÎ ¸®¼ÂÆ® ÇÑ ´ÙÀ½ »õ·Î¿î Àå¼Ò¿¡ GET ¸®Äù½ºÆ®¸¦ ¼Û½ÅÇÕ´Ï´Ù.ÀÌ ÇൿÀ» º¯°æÇÏ·Á¸é , ¼³Á¤ ÆÄ¶ó¹ÌÅÍ 'strictredirects' (À»)¸¦ TRUE (À¸)·Î ¼³Á¤ÇÕ´Ï´Ù.

·Ê 13.6. 301 (ÀÌ)³ª 302 ÀÇ ¸®½ºÆù½º¿¡ ´ëÇÑ´Ù RFC 2616 ÁذÅÀÇ ¸®µð·ºÆ®


<?php
    
//  ¾ö°ÝÇÑ ¸®µð·ºÆ®
    
$client->setConfig(array('strictredirects' => true)
    
    
//  ¾ö°ÝÇÏÁö ¾ÊÀº ¸®µð·ºÆ®
    
$client->setConfig(array('strictredirects' => false)
?>

¸®Äù½ºÆ®¸¦ ¼Û½ÅÇÏ°í ³ª¼­ ¸®µð·ºÆ®¸¦ ÇÑ È¸¼ö¸¦ ÃëµæÇÏ·Á¸é getRedirectionsCount() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.

13.2.2. ÄíŰÀÇ Ãß°¡ ¹× Áö¼ÓÀûÀÎ ÄíŰÀÇ »ç¿ë

Zend_Http_Client (À»)¸¦ »ç¿ëÇϸé, ¸®Äù½ºÆ®¿¡ °£´ÜÇÏ°Ô Äí۸¦ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. Çì´õ¸¦ º¯°æÇϰųª ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.Äí۸¦ Ãß°¡ÇÏ·Á¸é setCookie() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.ÀÌ ¸Þ¼Òµå¿¡´Â ¸î°³ÀÇ ¿ë¹ýÀÌ ÀÖ½À´Ï´Ù.

·Ê 13.7. setCookie() ¿¡ ÀÇÇÑ ÄíŰÀÇ ¼³Á¤


<?php
    
//  °£´ÜÇÏ°í ½ÉÇÃÇÑ ¹æ¹ý:  ÄíŰÀÇ À̸§°ú °ªÀ» ÁöÁ¤ÇÕ´Ï´Ù.
    
$client->setCookie('flavor''chocolate chips');
    
    
//  ÄíŰ ¹®ÀÚ¿­ (name=value)  (À»)¸¦ Á÷Á¢ ÁöÁ¤ÇÕ´Ï´Ù.
    //  °ªÀ» URL  encode ÇØ µÑ Çʿ䰡 ÀÖ´Â °Í¿¡ ÁÖÀÇÇսôÙ.
    
$client->setCookie('flavor=chocolate%20chips');
    
    
// Zend_Http_Cookie  ¿ÀºêÁ§Æ®¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
    
$cookie Zend_Http_Cookie::factory('flavor=chocolate%20chips');
    
$client->setCookie($cookie);
?>

Zend_Http_Cookie ¿ÀºêÁ§Æ®¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ °ÍÀº Ç×13.4. ¡¸Zend_Http_Cookie ¹× Zend_Http_CookieJar ¡¹ (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.

Zend_Http_Client (Àº)´Â, ÄíŰÀÇ Áö¼Ó¼º (stickiness) µµ Á¦°øÇϰí ÀÖ½À´Ï´Ù. ¼Û¼ö½Å ÇÑ Äí۸¦ Ŭ¶óÀ̾ðÆ®ÀÇ ³»ºÎ¿¡¼­ º¸°ü À¯ÁöÇØ, ±× ÀÌÈÄÀÇ ¸®Äù½ºÆ®·Î ÀÚµ¿ÀûÀ¸·Î Àç¹ß¼Û½Å ÇÕ´Ï´Ù. À̰ÍÀº, ¿¹¸¦ µé¾î ¸®¸ðÆ® »çÀÌÆ®¿¡ ·Î±×ÀÎÇØ ÀÎÁõ Á¤º¸³ª ¼¼¼Ç ID ÀÇ Äí۸¦ ÃëµæÇÏ°í ³ª¼­ ´ÙÀ½ÀÇ ¸®Äù½ºÆ®¿¡ ÁøÇàµÇ´Â °æ¿ì µî¿¡ Æí¸®ÇÕ´Ï´Ù.

·Ê 13.8. ÄíŰÀÇ Áö¼ÓÈ­


<?php
    
//  ÄíŰÀÇ Áö¼Ó¼ºÀ» À¯È¿ÇÏ°Ô ÇØ, Àü±â¹äÅë¿¡ º¸Á¸ÇÕ´Ï´Ù
    
$client->setCookieJar();
    
    
//  ÃÖÃÊÀÇ ¸®Äù½ºÆ®:  ·Î±×ÀÎÇØ, ¼¼¼ÇÀ» °³½ÃÇÕ´Ï´Ù
    
$client->setUri('http://example.com/login.php');
    
$client->addParameterPost('user''h4x0r');
    
$client->addParameterPost('password''1337');
    
$client->request('POST');
    
    
//  ¸®½ºÆù½º·Î ¼³Á¤µÈ ÄíŰ ( ¿¹¸¦ µé¾î ¼¼¼Ç ID  ÄíŰ µî)
    //  ÀÇ ³»¿ëÀº, ÀÚµ¿ÀûÀ¸·Î Àü±â¹äÅë¿¡ º¸Á¸µË´Ï´Ù.
    
    //  ´ÙÀ½ÀÇ ¸®Äù½ºÆ®¸¦ ¼Û½ÅÇÕ´Ï´Ù.ÀÌ ¶§¿¡,
    //  ¹æ±ÝÀü º¸Á¸µÈ Äí۰¡ ÀÚµ¿ÀûÀ¸·Î ¼Û½ÅµË´Ï´Ù.
    
$client->setUri('http://example.com/read_member_news.php');
    
$client->request('GET');
?>

Zend_Http_CookieJar Ŭ·¡½º¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ °ÍÀº Ç×13.4.5. ¡¸Zend_Http_CookieJar ÀÇ ÀνºÅϽºÀÇ ÀÛ¼º¡¹ (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.

13.2.3. µ¶ÀÚÀûÀÎ ¸®Äù½ºÆ® Çì´õÀÇ ¼³Á¤

µ¶ÀÚÀûÀÎ Çì´õ¸¦ ÁöÁ¤ÇÏ·Á¸é setHeaders() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå¿¡´Â, ´Ù¾çÇÑ ¿ë¹ýÀÌ ÀÖ½À´Ï´Ù.±×°ÍÀ» ÀÌÇÏÀÇ ¿¹·Î ¼³¸íÇÕ´Ï´Ù.

·Ê 13.9. µ¶ÀÚÀûÀÎ ¸®Äù½ºÆ® Çì´õÀÇ ¼³Á¤


<?php
    
//  ÇϳªÀÇ Çì´õ¸¦ ¼³Á¤ÇÕ´Ï´Ù.±âÁ¸ÀÇ °ªÀ» µ¡¾²±âÇÕ´Ï´Ù.
    
$client->setHeaders('Host''www.example.com');
    
    
//  À§¿Í ¿ÏÀüÈ÷ °°Àº °ÍÀ» ´Ù¸¥ ¹æ¹ýÀ¸·Î ½Ç½ÃÇÕ´Ï´Ù.
    
$client->setHeaders('Host: www.example.com');
    
    
//  µ¿ÀÏÇÑ Çì´õ¿¡ ´ëÇØ¼­ º¹¼öÀÇ °ªÀ» ¼³Á¤ÇÕ´Ï´Ù (Cookie  Çì´õ µî¿¡ À¯¿ëÇÕ´Ï´Ù) .
    
$client->setHeaders('Cookie', array(
        
'PHPSESSID=1234567890abcdef1234567890abcdef',
        
'language=he'
    
));
?>

setHeader() (Àº)´Â, º¹¼öÀÇ Çì´õ¸¦ ÇÑ ¹øÀ¸·Î ¼³Á¤ÇÏ´Â Àϵµ °£´ÜÇÏ°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× °æ¿ì´Â, Çì´õÀÇ ¹è¿­À» ÆÄ¶ó¹ÌÅͷμ­ ÁöÁ¤ÇÕ´Ï´Ù.

·Ê 13.10. º¹¼öÀÇ µ¶ÀÚ ¸®Äù½ºÆ® Çì´õÀÇ ¼³Á¤


<?php
    
//  º¹¼öÀÇ Çì´õ¸¦ ¼³Á¤ÇÕ´Ï´Ù.±âÁ¸ÀÇ °ªÀ» µ¡¾²±âÇÕ´Ï´Ù.
    
$client->setHeaders(array(
        
'Host' => 'www.example.com',
        
'Accept-encoding''gzip,deflate',
        
'X-Powered-By' => 'Zend Framework'));
    
    
//  ¹è¿­¿¡´Â ¹®ÀÚ¿­À» Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.
    
$client->setHeaders(array(
        
'Host: www.example.com',
        
'Accept-encoding: gzip,deflate',
        
'X-Powered-By: Zend Framework'));
?>

13.2.4. ÆÄÀÏÀÇ ¾÷ ·Îµå

ÆÄÀÏÀ» HTTP ±×¸®°í ¾÷ ·ÎµåÇÏ·Á¸é setFileUpload ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ ¸Þ¼ÒµåÀÇ ÃÖÃÊÀÇ Àμö´Â ÆÄÀϸí, µÎ¹øÂ°ÀÇ Àμö´Â Æû¸í, ±×¸®°í ¿É¼ÇÀÇ 3¹øÂ°ÀÇ Àμö°¡ µ¥ÀÌÅͰ¡ µË´Ï´Ù. 3¹øÂ°ÀÇ ÆÄ¶ó¹ÌÅͰ¡ null ÀÇ °æ¿ì´Â, ÃÖÃÊÀÇ ÆÄ¶ó¹ÌÅÍ·Î ÁöÁ¤ÇÑ ÆÄÀϸíÀÇ ÆÄÀÏÀÌ ÀÖ´Â °ÍÀ¸·Î °£ÁÖÇØÁ® Zend_Http_Client ÇÏÁö¸¸ ±×°ÍÀ» Àоîµé¿© ¾÷ ·ÎµåÇÏ·Á°í ÇÕ´Ï´Ù. 3¹øÂ°ÀÇ ÆÄ¶ó¹ÌÅͰ¡ null ÀÌ¿ÜÀÇ °æ¿ì´Â, ÆÄÀϸíÀº ÃÖÃÊÀÇ ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇÕ´Ï´Ù¸¸ ½ÇÁ¦ÀÇ ³»¿ëÀº µð½ºÅ©»ó¿¡ Á¸ÀçÇÒ Çʿ䰡 ¾ø¾îÁý´Ï´Ù. µÎ¹øÂ°ÀÇ ÆÄ¶ó¹ÌÅÍÀÇ Æû¸íÀº Ç×»ó ÇʼöÀÔ´Ï´Ù.HTML ÆûÀ¸·Î ¾÷ ·ÎµåÇÏ´Â °æ¿ì, À̰ÍÀº >input< ű×ÀÇ "name" ¼Ó¼º°ú µ¿ÀÏÇØÁý´Ï´Ù. 4¹øÂ°ÀÇ ¿É¼ÇÀÇ ÆÄ¶ó¹ÌÅÍ´Â, ÆÄÀÏÀÇ content-type ÀÔ´Ï´Ù. ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ø °æ¿ì,Zend_Http_Client (Àº)´Â, µð½ºÅ©·ÎºÎÅÍ ÀоîµéÀÎ ÆÄÀÏ¿¡ ´ëÇØ¼­ mime_content_type ÇÔ¼ö¸¦ »ç¿ëÇØ content-type (À»)¸¦ ÆÇÁ¤ÇÕ´Ï´Ù. ¾î´À °æ¿ì¿¡¼­µµ, µðÆúÆ®ÀÇ MIME ÇüÅ´ application/octet-stream µË´Ï´Ù.

·Ê 13.11. setFileUpload ¿¡ ÀÇÇÑ ÆÄÀÏÀÇ ¾÷ ·Îµå


<?php
    
//  ÀÓÀÇÀÇ µ¥ÀÌÅ͸¦ ÆÄÀϷμ­ ¾÷ ·ÎµåÇÕ´Ï´Ù.
    
$text 'this is some plain text';
    
$client->setFileUpload('some_text.txt''upload'$text'text/plain');
    
    
//  ±âÁ¸ÀÇ ÆÄÀÏÀ» ¾÷ ·ÎµåÇÕ´Ï´Ù.
    
$client->setFileUpload('/tmp/Backup.tar.gz''bufile');
    
    
//  ÆÄÀÏÀ» ¼Û½ÅÇÕ´Ï´Ù.
    
$client->submit('POST');
?>

ÃÖÃÊÀÇ ¿¹¿¡¼­´Â, º¯¼ö $text ÀÇ ³»¿ëÀÌ ¾÷ ·ÎµåµÇ¾î ¼­¹ö»ó¿¡¼­ $_FILES['upload'] (À¸)·Î¼­ »ç¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.µÎ¹øÂ°ÀÇ ¿¹¿¡¼­´Â, ±âÁ¸ÀÇ ÆÄÀÏ /tmp/Backup.tar.gz (À»)¸¦ ¼­¹ö¿¡ ¾÷ ·ÎµåÇØ, ¼­¹ö»ó¿¡¼­ $_FILES['bufile'] (À¸)·Î¼­ »ç¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. content-type (Àº)´Â ÀÚµ¿ÀûÀ¸·Î ÃßÃøµË´Ï´Ù.ÃßÃø¿¡ ½ÇÆÐÇßÀ» °æ¿ì´Â, 'application/octet-stream' (À¸)·Î ¼³Á¤µË´Ï´Ù.

[
ÁÖÀÇ] ÆÄÀÏÀÇ ¾÷ ·Îµå

ÆÄÀÏÀ» ¾÷ ·ÎµåÇÒ ¶§ ,HTTP ¸®Äù½ºÆ®ÀÇ content-type (Àº)´Â ÀÚµ¿ÀûÀ¸·Î multipart/form-data (À¸)·Î ¼³Á¤µË´Ï´Ù. ÆÄÀÏÀ» ¾÷ ·ÎµåÇÏ·Á¸é ,POST ȤÀº PUT ¸®Äù½ºÆ®¸¦ »ç¿ëÇØ¾ß ÇÏ´Â °Í¿¡ ÁÖÀÇÇսôÙ. ´ëºÎºÐÀÇ ¼­¹ö¿¡¼­´Â, ±× ÀÌ¿ÜÀÇ ¸®Äù½ºÆ® ¸Þ¼Òµå°¡ »ç¿ëµÇ¾úÀ» °æ¿ì¿¡´Â ±× º»¹®À» ¹«½ÃÇÕ´Ï´Ù.

13.2.5. »ýÀÇ POST µ¥ÀÌÅÍÀÇ ¼Û½Å

Zend_Http_Client ±×¸®°í »ýÀÇ POST µ¥ÀÌÅ͸¦ ¼Û½ÅÇÏ·Á¸é setRawData() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.ÀÌ ¸Þ¼Òµå´Â µÎ ÆÄ¶ó¹ÌÅ͸¦ ¹Þ½À´Ï´Ù. ¿ì¼± ÃÖÃʰ¡, ¸®Äù½ºÆ® º»¹®À¸·Î ¼Û½ÅÇÏ´Â µ¥ÀÌÅÍÀÔ´Ï´Ù. µÎ¹øÂ°ÀÇ ÆÄ¶ó¹ÌÅÍ´Â ¿É¼ÇÀ¸·Î, µ¥ÀÌÅÍÀÇ content-type (À»)¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ ÆÄ¶ó¹ÌÅÍ´Â ¿É¼ÇÀÔ´Ï´Ù¸¸, ¸®Äù½ºÆ®¸¦ ¼Û½ÅÇϱâ Àü¿¡´Â °¡´ÉÇÑ ÇÑ ¼³Á¤ÇØ µÎµµ·Ï ÇսôÙ. setRawData() Àܷ̿εµ, ´Ù¸¥ ¸Þ¼Òµå setEncType() (À»)¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

·Ê 13.12. »ýÀÇ POST µ¥ÀÌÅÍÀÇ ¼Û½Å


<?php
    $xml 
'<book>' 
           
'  <title> ÇØ·ùÀÇ ³ªÄ«³ë½Ã¸¶µé</title>' 
           
'  <author> ¾Æ³×½ºÆ®¡¤Hemingway</author>' 
           
'  <year>1970</year>' 
           
'</book>';
           
    
$client->setRawData($xml'text/xml')->request('POST');
    
    
//  °°Àº °ÍÀ», ´Ù¸¥ ¹æ¹ý¿¡¼­µµ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
    
$client->setRawData($xml)->setEncType('text/xml')->request('POST');
?>

ÀÌ µ¥ÀÌÅ͸¦ ¼­¹öÃø¿¡¼­ »ç¿ëÇÏ·Á¸é ,PHP ÀÇ º¯¼ö $HTTP_RAW_POST_DATA ȤÀº php://input ½ºÆ®¸²À» »ç¿ëÇÕ´Ï´Ù.

[
ÁÖÀÇ] »ýÀÇ POST µ¥ÀÌÅÍÀÇ »ç¿ë

¸®Äù½ºÆ®¿¡ »ýÀÇ POST µ¥ÀÌÅ͸¦ ¼³Á¤Çϸé, ±× ¿ÜÀÇ POST ÆÄ¶ó¹ÌÅͳª ¾÷ ·ÎµåÇÏ´Â ÆÄÀÏÀÇ ³»¿ëÀÌ ¸ðµÎ µ¡¾²±âµË´Ï´Ù. µ¿ÀÏ ¸®Äù½ºÆ®·Î À̰͵éÀ» °ø¿ëÇÏ·Á°í ÇÏÁö ¸»¾Æ ÁÖ¼¼¿ä. ´ëºÎºÐÀÇ ¼­¹ö´Â,POST ¸®Äù½ºÆ® À̿ܿ¡¼­´Â ¸®Äù½ºÆ® º»¹®À» ¹«½ÃÇÏ´Â Àϵµ ±â¾ïÇØ µÓ½Ã´Ù.

13.2.6. HTTP ÀÎÁõ

ÇöÀç Zend_Http_Client ÇÏÁö¸¸ ¼­Æ÷Æ®Çϰí ÀÖ´Â °ÍÀº, º£ÀÌÁ÷ HTTP ÀÎÁõ¸¸ÀÔ´Ï´Ù. ÀÌ ±â´ÉÀ» ÀÌ¿ëÇÏ·Á¸é setAuth() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå°¡ ¹Þ´Â ÆÄ¶ó¹ÌÅÍ´Â ¼¼ °³·Î, À¯Àú¸í°ú ÆÐ½º¿öµå, ±×¸®°í ¿É¼ÇÀ¸·Î ÀÎÁõ ŸÀÔÀÌ µË´Ï´Ù. ¹æ±ÝÀü ¼³¸íÇÑ °Íó·³, ÇöÀç´Â º£ÀÌÁ÷ ÀÎÁõ ¹Û¿¡ ¼­Æ÷Æ®Çϰí ÀÖÁö ¾Ê½À´Ï´Ù ( Àå·¡ÀûÀ¸·Î´Â ´ÙÀÌÁ¦½ºÆ® ÀÎÁõµµ ¼­Æ÷Æ®ÇÒ ¿¹Á¤ÀÔ´Ï´Ù) .

·Ê 13.13. HTTP ÀÎÁõ¿ëÀÇ À¯Àú¿Í ÆÐ½º¿öµåÀÇ ¼³Á¤


<?php
    
//  º£ÀÌÁ÷ ÀÎÁõÀ» »ç¿ëÇÕ´Ï´Ù.
    
$client->setAuth('shahar''myPassword!'Zend_Http_Client::AUTH_BASIC);
    
    
//  º£ÀÌÁ÷ ÀÎÁõÀº µðÆúÆ®À̹ǷÎ, ÀÌ¿Í °°ÀÌ »ý·« ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
    
$client->setAuth('shahar''myPassword!');
?>

13.2.7. µ¿ÀÏ Å¬¶óÀÌ¾ðÆ®·ÎÀÇ º¹¼ö ¸®Äù½ºÆ®ÀÇ ¼Û½Å

Zend_Http_Client (Àº)´Â, º¹¼ö°¡ ¿¬¼ÓÇÑ ¸®Äù½ºÆ®¸¦ µ¿ÀÏ ¿ÀºêÁ§Æ®·Î ó¸®ÇÒ ¼ö ÀÖ°Ô µÇ¾î ÀÖ½À´Ï´Ù. À̰ÍÀº, ½ºÅ©¸³Æ®³»¿¡¼­ º¹¼öÀÇ Àå¼Ò·ÎºÎÅÍ µ¥ÀÌÅ͸¦ ÃëµæÇÏ´Â °æ¿ì³ª, ƯÁ¤ÀÇ HTTP ÀÚ¿ø¿¡ ¾×¼¼½º ÇÒ ¶§¿¡ ·Î±×ÀÎÇØ ¼¼¼Ç Äí۸¦ ÃëµæÇÒ Çʿ䰡 ÀÖ´Â °æ¿ì µî¿¡ Æí¸®ÇÕ´Ï´Ù.

µ¿ÀÏ È£½ºÆ®·ÎºÎÅÍÀÇ º¹¼öÀÇ ¸®Äù½ºÆ®¸¦ ½Ç½ÃÇÒ ¶§ , ¼³Á¤ Ç÷¡±× 'keepalive' (À»)¸¦ À¯È¿ÇÏ°Ô ÇÏ´Â °ÍÀ» °­ÇÏ°Ô Ãßõ ÇÕ´Ï´Ù. ÀÌ·¸°Ô Çϸé, ¸¸¾à ¼­¹ö°¡ keep-alive (À»)¸¦ ¼­Æ÷Æ®Çϰí ÀÖ´Â °æ¿ì¿¡, ¸ðµç ¸®Äù½ºÆ®°¡ ¿Ï·áÇØ Ŭ¶óÀÌ¾ðÆ® ¿ÀºêÁ§Æ®°¡ ÆÄ±âµÉ ¶§±îÁö´Â Á¢¼ÓÀÌ º¸°ü À¯ÁöµË´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, ¼­¹ö¿ÍÀÇ TCP Á¢¼ÓÀ» ¸î¹øÀ̳ª ¿ÀÇ ´Ù½Ã ÇÏ´Â ¼ö°í¸¦ ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù.

µ¿ÀÏ Å¬¶óÀÌ¾ðÆ®·ÎºÎÅÍ º¹¼öÀÇ ¸®Äù½ºÆ®¸¦ ¼Û½ÅÀÌ, °¢ ¸®Äù½ºÆ®ÀÇ ÆÄ¶ó¹ÌÅÍ´Â ¿ÏÀüÇÏ°Ô ±¸º°ÇÏ°í ½Í´Ù°í ÇßÀ» °æ¿ì´Â, resetParameters() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.À̰Ϳ¡ ÀÇÇØ,GET (ÀÌ)³ª POST ÀÇ ÆÄ¶ó¹ÌÅÍ, ¸®Äù½ºÆ®ÀÇ º»¹® ±×¸®°í ¸®Äù½ºÆ® °íÀ¯ÀÇ Çì´õ°¡ ¸®¼ÂÆ® µÇ¾î ´ÙÀ½ÀÇ ¸®Äù½ºÆ®¿¡´Â ¹Ì·ç¾îÁ®¼­ ¾ø¾îÁý´Ï´Ù.

[
ÁÖÀÇ] ÆÄ¶ó¹ÌÅÍÀÇ ¸®¼ÂÆ®

¸®Äù½ºÆ® °íÀ¯ÇÏÁö ¾ÊÀº Çì´õ´Â,resetParameters ¸Þ¼Òµå¸¦ »ç¿ëÇØµµ ¸®¼ÂÆ® µÇÁö ¾Ê½À´Ï´Ù.½ÇÁ¦ÀÇ °÷, ¸®¼ÂÆ® µÇ´Â °ÍÀº 'Content-length' (¿Í)°ú 'Content-type' »ÓÀÔ´Ï´Ù.À̰Ϳ¡ ÀÇÇØ, ¿¹¸¦ µé¾î 'Accept-language' (ÀÌ)³ª 'Accept-encoding' (¿Í)°ú °°Àº Çì´õ¸¦ ºÙ¿© ÀØ´Â °ÍÀ» ¸·½À´Ï´Ù.

¿¬¼ÓÇÑ ¸®Äù½ºÆ®¸¦ À§Çؼ­ ¸¸µé¾îÁ® ÀÖ´Â ¶Ç ÇϳªÀÇ ±â´ÉÀÌ, ÄíŰ Àü±â¹äÅë ¿ÀºêÁ§Æ®ÀÔ´Ï´Ù.ÄíŰ Àü±â¹äÅëÀ» »ç¿ëÇϸé, ÃÖÃÊÀÇ ¸®Äù½ºÆ® ½Ã¿¡ ¼­¹ö·ÎºÎÅÍ ¹ÞÀº Äí۸¦ ÀÚµ¿ÀûÀ¸·Î º¸Á¸ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í ±× ÀÌÈÄÀÇ ¸®Äù½ºÆ® ½Ã¿¡´Â º¸Á¸ÇÑ Äí۸¦ ÀÚµ¿ÀûÀ¸·Î ¼Û½ÅÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, ¿¹¸¦ µé¾î ½ÇÁ¦ÀÇ µ¥ÀÌÅÍ Ãëµæ ¸®Äù½ºÆ®ÀÇ Àü¿¡ ÀÎÁõ ¸®Äù½ºÆ®¸¦ ½Ç½ÃÇÏ´Â °ÍµîÀÌ °¡´ÉÇØÁý´Ï´Ù.

¾îÇø®ÄÉÀ̼ÇÀÌ À¯Àú ´ÜÀ§ÀÇ ÀÎÁõÀ» ÇÊ¿ä·Î Çϰí ÀÖ¾î ¾îÇø®ÄÉÀ̼dz»ÀÇ º¹¼öÀÇ ½ºÅ©¸³Æ®·Î ¿¬¼ÓÇÑ ¸®Äù½ºÆ®°¡ ¹ß»ýÇÏ´Â °æ¿ì´Â, ÄíŰ Àü±â¹äÅë ¿ÀºêÁ§Æ®¸¦ ¼¼¼Ç¿¡ °Ý³³ÇÏ´Â °ÍÀ» ÃßõÇÕ´Ï´Ù. ÀÌ·¸°Ô Çϸé, ÇÑ ¹ø ÀÎÁõÀ» ¹Þ´Â °Í¸¸À¸·Î ±×°ÍÀ» ¼¼¼Ç Àüü·Î »ç¿ëÇØ µ¹¸± ¼ö ÀÖ°Ô µË´Ï´Ù.

·Ê 13.14. ´ÜÀÏÀÇ Å¬¶óÀÌ¾ðÆ®¿¡ ÀÇÇÑ ¿¬¼ÓÇÑ ¸®Äù½ºÆ®ÀÇ ½ÇÇà


<?php
    
//  ¿ì¼±, Ŭ¶óÀ̾ðÆ®ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
    
$client = new Zend_Http_Client('http://www.example.com/fetchdata.php', array(
        
'keepalive' => true
    
));
    
    
//  ¼¼¼Ç¿¡ Äí۰¡ º¸Á¸µÇ°í ÀÖ½À´Ï±î?
    
if (isset($_SESSION['cookiejar']) && 
        
$_SESSION['cookiejar'] instanceof Zend_Http_CookieJar)) {
        
        
$client->setCookieJar($_SESSION['cookiejar']);
    } else {
        
//  ¾øÀ¸¸é, ÀÎÁõÀ» ½Ç½ÃÇØ Äí۸¦ º¸Á¸ÇÕ´Ï´Ù.
        
$client->setCookieJar();
        
$client->setUri('http://www.example.com/login.php');
        
$client->setParameterPost(array(
            
'user' => 'shahar',
            
'pass' => 'somesecret'
        
));
        
$client->request(Zend_Http_Client::POST);
        
        
//  ÀÚ, ÆÄ¶ó¹ÌÅ͸¦ ¼Ò°ÅÇØ URI  (À»)¸¦ ¿ø·¡ÀÇ °Í¿¡ µÇµ¹¸³½Ã´Ù
        // ( ¼­¹ö¿¡ ÀÇÇØ¼­ ¼³Á¤µÈ ÄíŰ´Â, Àü±â¹äÅë¿¡ º¸Á¸µÇ°í ÀÖ´Ù
        //   ÀÏ·Î ÁÖÀÇÇսôÙ)
        
$client->resetParameters();
        
$client->setUri('http://www.example.com/fetchdata.php');
    }
    
    
$response $client->request(Zend_Http_Client::GET);
    
    
//  Äí۸¦ ¼¼¼Ç¿¡ º¸Á¸ÇØ, ´ÙÀ½ÀÇ ÆäÀÌÁö·Î »ç¿ëÇÕ´Ï´Ù.
    
$_SESSION['cookiejar'] = $client->getCookieJar();
?>