µðÆúÆ®¿¡¼´Â,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() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
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 ÀÇ ÀνºÅϽºÀÇ ÀÛ¼º¡¹ (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.
µ¶ÀÚÀûÀÎ Çì´õ¸¦ ÁöÁ¤ÇÏ·Á¸é 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'));
?>
ÆÄÀÏÀ» 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 ¸®Äù½ºÆ®¸¦ »ç¿ëÇØ¾ß ÇÏ´Â °Í¿¡ ÁÖÀÇÇսôÙ. ´ëºÎºÐÀÇ ¼¹ö¿¡¼´Â, ±× ÀÌ¿ÜÀÇ ¸®Äù½ºÆ® ¸Þ¼Òµå°¡ »ç¿ëµÇ¾úÀ» °æ¿ì¿¡´Â ±× º»¹®À» ¹«½ÃÇÕ´Ï´Ù. |
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 ¸®Äù½ºÆ® À̿ܿ¡¼´Â ¸®Äù½ºÆ® º»¹®À» ¹«½ÃÇÏ´Â Àϵµ ±â¾ïÇØ µÓ½Ã´Ù. |
ÇöÀç Zend_Http_Client ÇÏÁö¸¸ ¼Æ÷Æ®Çϰí ÀÖ´Â °ÍÀº, º£ÀÌÁ÷ HTTP ÀÎÁõ¸¸ÀÔ´Ï´Ù. ÀÌ ±â´ÉÀ» ÀÌ¿ëÇÏ·Á¸é setAuth() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå°¡ ¹Þ´Â ÆÄ¶ó¹ÌÅÍ´Â ¼¼ °³·Î, À¯Àú¸í°ú ÆÐ½º¿öµå, ±×¸®°í ¿É¼ÇÀ¸·Î ÀÎÁõ ŸÀÔÀÌ µË´Ï´Ù. ¹æ±ÝÀü ¼³¸íÇÑ °Íó·³, ÇöÀç´Â º£ÀÌÁ÷ ÀÎÁõ ¹Û¿¡ ¼Æ÷Æ®Çϰí ÀÖÁö ¾Ê½À´Ï´Ù ( Àå·¡ÀûÀ¸·Î´Â ´ÙÀÌÁ¦½ºÆ® ÀÎÁõµµ ¼Æ÷Æ®ÇÒ ¿¹Á¤ÀÔ´Ï´Ù) .
·Ê 13.13. HTTP ÀÎÁõ¿ëÀÇ À¯Àú¿Í ÆÐ½º¿öµåÀÇ ¼³Á¤
<?php
//
º£ÀÌÁ÷ ÀÎÁõÀ» »ç¿ëÇÕ´Ï´Ù.
$client->setAuth('shahar', 'myPassword!', Zend_Http_Client::AUTH_BASIC);
//
º£ÀÌÁ÷ ÀÎÁõÀº µðÆúÆ®À̹ǷÎ, ÀÌ¿Í °°ÀÌ »ý·« ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
$client->setAuth('shahar', 'myPassword!');
?>
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();
?>