42.2. Zend_XmlRpc_Client

42.2.1. µµÀÔ

Zend Framework ±×·³, Ŭ¶óÀÌ¾ðÆ®·Î¼­ ¸®¸ðÆ®ÀÇ XML-RPC ¼­ºñ½º¸¦ »ç¿ëÇÏ´Â Àϵµ ¼­Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù.±×·¯±â À§Çؼ­´Â Zend_XmlRpc_Client ÆÐŰÁö¸¦ »ç¿ëÇÕ´Ï´Ù. ÁÖµÈ ±â´É¿¡´Â,PHP (¿Í)°ú XML-RPC ÀÇ »çÀÌÀÇ ÇüÅ º¯È¯À̳ª ¼­¹öÀÇ ÇÁ·Ï½Ã ¿ÀºêÁ§Æ®, ±×¸®°í ¼­¹ö°¡ Á¦°øÇÏ´Â ±â´ÉÀ» Á¶»çÇÏ´Â °ÍµîÀÌ ÀÖ½À´Ï´Ù.

42.2.2. ¸Þ¼ÒµåÀÇ ÄÝ

Zend_XmlRpc_Client ÀÇ constructor¡¡ ¡¡ Àº, ¸®¸ðÆ® XML-RPC ¼­¹öÀÇ URL (À»)¸¦ ÃÖÃÊÀÇ Àμö·Î¼­ ¹Þ½À´Ï´Ù. µ¹·ÁÁÖ¾îÁø ÀνºÅϽº¸¦ »ç¿ëÇϰí, ±× ÀÚ¸®¼Ò·ÎºÎÅÍ ´Ù¾çÇÑ ¸®¸ðÆ® ¸Þ¼Òµå¸¦ ½ÇÇàÇÕ´Ï´Ù.

¸®¸ðÆ® ¸Þ¼Òµå¸¦ XML-RPC Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍ ÄÝ ÇÏ·Á¸é , ÀνºÅϽº¸¦ ÀÛ¼ºÇÑ ´ÙÀ½¿¡ call() ¸Þ¼Òµå¸¦ ÄÝ ÇÕ´Ï´Ù. ÀÌÇÏÀÇ ¿¹¿¡¼­´Â Zend Framework ÀÇ À¥ »çÀÌÆ®»ó¿¡ ÀÖ´Â µ¥¸ð¿ëÀÇ XML-RPC ¼­¹ö¸¦ »ç¿ëÇÕ´Ï´Ù.Zend_XmlRpc ÀÇ Å×½ºÆ®³ª Á¶»ç¸¦ À§Çؼ­, ÀÌ ¼­¹ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

·Ê 42.1. XML-RPC ¸Þ¼ÒµåÀÇ ÄÝ


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

$client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');

echo 
$client->call('test.sayHello');

// hello

¸®¸ðÆ® ¸Þ¼ÒµåÀÇ ÄÝ¿¡ ÀÇÇØ¼­ µ¹·ÁÁÖ¾îÁø´Ù XML-RPC ÀÇ °ªÀº, ÀÚµ¿ÀûÀ¸·Î PHP ÀÇ ³×ÀÌÆ¼ºêÇü¿¡ º¯È¯µË´Ï´Ù. À§ÀÇ ¿¹¿¡¼­´Â PHP ÀÇ string ÇÏÁö¸¸ µ¹·ÁÁÖ¾îÁö¹Ç·Î, ±×°ÍÀ» ±×´ë·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

call() ¸Þ¼ÒµåÀÇ ÃÖÃÊÀÇ ÆÄ¶ó¹ÌÅÍ´Â, ÄÝ ÇÏ´Â ¸®¸ðÆ® ¸Þ¼ÒµåÀÇ À̸§ÀÔ´Ï´Ù. ±× ¸®¸ðÆ® ¸Þ¼Òµå°¡ ¾î¶°ÇÑ ÆÄ¶ó¹ÌÅ͸¦ ¿ä±¸ÇÏ´Â °æ¿ì´Â, ±×°ÍÀ» call() ÀÇ µÎ¹øÂ°ÀÇ ¿É¼ÇÀÇ ÆÄ¶ó¹ÌÅÍ·Î ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ ÆÄ¶ó¹ÌÅÍ¿¡´Â, ¸®¸ðÆ® ¸Þ¼Òµå¿¡ °Ç³×ÁÖ´Â °ªÀ» ¹è¿­·Î ÁöÁ¤ÇÕ´Ï´Ù.

·Ê 42.2. ÆÄ¶ó¹ÌÅ͸¦ ÁöÁ¤Çß´Ù XML-RPC ¸Þ¼ÒµåÀÇ ÄÝ


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

$client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');

$arg1 1.1;
$arg2 'foo';

$result $client->call('test.sayHello', array($arg1$arg2));

// $result (Àº)´Â ³×ÀÌÆ¼ºêÀΠPHP ÀÇ ÇüŰ¡ µË´Ï´Ù

¸®¸ðÆ® ¸Þ¼Òµå°¡ ÆÄ¶ó¹ÌÅ͸¦ ¿ä±¸Çϰí ÀÖÁö ¾Ê´Â °æ¿ì´Â, ÀÌ ÆÄ¶ó¹ÌÅÍ¿¡´Â ¾Æ¹«°Íµµ ÁöÁ¤ÇÏÁö ¾Ê½À´Ï´Ù.ȤÀº ÇÏ´ÃÀÇ array() (À»)¸¦ °Ç³×ÁÝ´Ï´Ù.¸®¸ðÆ® ¸Þ¼Òµå¿¡ °Ç³×ÁÖ´Â ÆÄ¶ó¹ÌÅÍÀÇ ¹è¿­¿¡´Â, ³×ÀÌÆ¼ºêÀÇ PHP ÇüÅÂ¿Í Zend_XmlRpc_Value ¿ÀºêÁ§Æ®ÀÇ ¾çÂÊ ¸ðµÎ¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.±×°ÍµéÀ» È¥¿ëÇÏ´Â °Íµµ °¡´ÉÇÕ´Ï´Ù.

call() ¸Þ¼Òµå´Â ÀÚµ¿ÀûÀ¸·Î XML-RPC ÀÇ ¸®½ºÆù½º¸¦ º¯È¯ÇØ, µ¿µîÇÑ PHP ³×ÀÌÆ¼ºêÇüÀ¸·Î ÇØ µ¹·ÁÁÝ´Ï´Ù.µ¹¾Æ°¡ °ªÀ» Zend_XmlRpc_Response ¿ÀºêÁ§Æ®·Î¼­ ÃëµæÇÏ·Á¸é , ÀÌ ¸Þ¼ÒµåÀÇ ´ÙÀ½¿¡ getLastResponse() (À»)¸¦ ÄÝ ÇÕ´Ï´Ù.

42.2.3. ÇüÅ ¹× ±× º¯È¯

¸®¸ðÆ® ¸Þ¼Òµå¾È¿¡´Â ÆÄ¶ó¹ÌÅͰ¡ ÇÊ¿äÇÑ °ÍÀÌ ÀÖ½À´Ï´Ù. ÇÊ¿äÇÑ ÆÄ¶ó¹ÌÅÍ´Â,Zend_XmlRpc_Client ÀÇ call() ¸Þ¼ÒµåÀÇ µÎ¹øÂ°ÀÇ ÆÄ¶ó¹ÌÅͷμ­ ¹è¿­·Î ÁöÁ¤ÇÕ´Ï´Ù. ÆÄ¶ó¹ÌÅ͸¦ °Ç³×ÁÖ´Â ¹æ¹ýÀº 2 °¡Áö ÀÖ½À´Ï´Ù.PHP ÀÇ ³×ÀÌÆ¼ºêÇü (À̰ÍÀº ÀÚµ¿ÀûÀ¸·Î º¯È¯µË´Ï´Ù) ±×¸®°í °Ç³×ÁÖ´ÂÁö, ´ëÀÀÇÑ´Ù XML-RPC Çü (Zend_XmlRpc_Value ¿ÀºêÁ§Æ®ÀÇ Çϳª) ±×¸®°í °Ç³×ÁÙ±îÀÇ ¸ÓÁö¾Ê¾ÆÀΰ¡ÀÔ´Ï´Ù.

42.2.3.1. PHP ³×ÀÌÆ¼ºê º¯¼ö¸¦ ÆÄ¶ó¹ÌÅͷμ­ °Ç³×ÁØ´Ù

call() ÀÇ ÆÄ¶ó¹ÌÅ͸¦ ³×ÀÌÆ¼ºêÀÇ PHP ÇüÅ·Π°Ç³×ÁÝ´Ï´Ù.Áï string, integer,float, boolean,array ȤÀº object ±×¸®°í °Ç³×ÁÖ´Â °ÍÀÔ´Ï´Ù. ÀÌ ¶§,PHP ÀÇ ³×ÀÌÆ¼ºêÇüÀº ÀÚµ¿ÀûÀ¸·Î °ËÃâµÇ¾î ÀÌÇÏÀÇ °Ñ(Ç¥)¿¡ µû¶ó¼­ XML-RPC ÇüÅ¿¡ º¯È¯µË´Ï´Ù.

Ç¥ 42.1. PHP (¿Í)°ú XML-RPC ÀÇ »çÀÌÀÇ ÇüÅ º¯È¯

PHP ³×ÀÌÆ¼ºêÇü XML-RPC Çü
integer int
double double
boolean boolean
string string
array array
associative array struct
object array

42.2.3.2. Zend_XmlRpc_Value ¿ÀºêÁ§Æ®¸¦ ÆÄ¶ó¹ÌÅͷμ­ °Ç³×ÁØ´Ù

ÆÄ¶ó¹ÌÅ͸¦ ³ªÅ¸³½´Ù Zend_XmlRpc_Value ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇØ,XML-RPC ÀÇ ÇüŸ¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ¿Í °°ÀÌ ÇÏ´Â ÀÌÀ¯¿¡´Â ´ÙÀ½°ú °°Àº °ÍÀÌ ÀÖ½À´Ï´Ù.

  • ÇÁ·Î½ÃÀú¿¡ ¿Ã¹Ù¸¥ ÇüÅ·Π°Ç³×¹Þ´Â °ÍÀ» È®½ÇÈ÷ ÇÏ°í ½ÍÀº °ÍÀÌ ÀÖ´Ù (¿¹¸¦ µé¸é,integer (À»)¸¦ ¿ä±¸Çϰí ÀÖ´Â ÇÁ·Î½ÃÀú¿¡ ´ëÇØ¼­ µ¥ÀÌŸº£À̽º·ÎºÎÅÍ ÃëµæÇÑ ¹®ÀÚ¿­À» °Ç³×ÁÖ°í ½ÍÀº °æ¿ì µî).

  • ÇÁ·Î½ÃÀú°¡ base64 Çüųª dateTime.iso8601 ÇüŸ¦ ¿ä±¸Çϰí ÀÖ´Â ÀÏÀÌ ÀÖ´Ù (À̰͵éÀº PHP ÀÇ ³×ÀÌÆ¼ºêÇü¿¡´Â Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù).

  • ÀÚµ¿º¯¿ªÀÌ ½ÇÆÐÇÏ´Â °æ¿ì (¿¹¸¦ µé¸é, ÇÏ´ÃÀÇ XML-RPC ±¸Á¶Ã¼¸¦ ÆÄ¶ó¹ÌÅͷμ­ °Ç³×ÁÖ´Â °ÍÀ» »ý°¢ÇսôÙ. À̰ÍÀº,PHP ±×·³ ÇÏ´ÃÀÇ ¹è¿­¿¡ ´ëÀÀÇÕ´Ï´Ù.±×·¯³ª, ÇÏ´ÃÀÇ ¹è¿­À» ÆÄ¶ó¹ÌÅͷμ­ °Ç³×ÁÖ¸é, ±×°ÍÀÌ ÀÚµ¿º¯¿ªµÇ¾úÀ» ¶§¿¡ XML-RPC ÀÇ array (ÀÌ)°¡ µÇ¾î ¹ö¸³´Ï´Ù.¿Ö³ÄÇϸé, ÇÏ´ÃÀÇ ¹è¿­Àº ¿¬»ó ¹è¿­Àº ¾Æ´Ï±â ¶§¹®ÀÔ´Ï´Ù).

Zend_XmlRpc_Value ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýÀº 2ÅëÀÖ½À´Ï´Ù.Zend_XmlRpc_Value ÀÇ ¼­ºê Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ Á÷Á¢ ÀÛ¼ºÇÏ´ÂÁö, ȤÀº Á¤Àû ÆÑÅ丮 ¸Þ¼Òµå Zend_XmlRpc_Value::getXmlRpcValue() (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.

Ç¥ 42.2. Zend_XmlRpc_Value ¿ÀºêÁ§Æ®¿Í ´ëÀÀÇÑ´Ù XML-RPC Çü

XML-RPC Çü ´ëÀÀÇÑ´Ù Zend_XmlRpc_Value Á¤¼ö Zend_XmlRpc_Value ¿ÀºêÁ§Æ®
int Zend_XmlRpc_Value::XMLRPC_TYPE_INTEGER Zend_XmlRpc_Value_Integer
double Zend_XmlRpc_Value::XMLRPC_TYPE_DOUBLE Zend_XmlRpc_Value_Double
boolean Zend_XmlRpc_Value::XMLRPC_TYPE_BOOLEAN Zend_XmlRpc_Value_Boolean
string Zend_XmlRpc_Value::XMLRPC_TYPE_STRING Zend_XmlRpc_Value_String
base64 Zend_XmlRpc_Value::XMLRPC_TYPE_BASE64 Zend_XmlRpc_Value_Base64
dateTime.iso8601 Zend_XmlRpc_Value::XMLRPC_TYPE_DATETIME Zend_XmlRpc_Value_DateTime
array Zend_XmlRpc_Value::XMLRPC_TYPE_ARRAY Zend_XmlRpc_Value_Array
struct Zend_XmlRpc_Value::XMLRPC_TYPE_STRUCT Zend_XmlRpc_Value_Struct

[ÁÖÀÇ] ÀÚµ¿º¯¿ª

»õ·Ó´Ù Zend_XmlRpc_Value ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇÒ ¶§ , ±× °ªÀº PHP ÀÇ ÇüÅ·μ­ ¼³Á¤µË´Ï´Ù.ÀÌ PHP ÀÇ ÇüÅ´Â, PHP ÀÇ Ä³½ºÆ® ±â´É¿¡ ÀÇÇØ¼­ º¯È¯µË´Ï´Ù. ¿¹¸¦ µé¾î,Zend_XmlRpc_Value_Integer ¿¡ ¹®ÀÚ¿­À» °Ç³×ÁÖ¸é,(int)$value (¿Í)°ú °°ÀÌ º¯È¯µË´Ï´Ù.

42.2.4. ¼­¹ö ÇÁ·Ï½Ã ¿ÀºêÁ§Æ®

¸®¸ðÆ® ¸Þ¼Òµå¸¦ XML-RPC Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍ ÄÝ ÇÏ´Â ¶Ç ÇϳªÀÇ ¹æ¹ýÀº, ¼­¹ö ÇÁ·Ï½Ã¸¦ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. ¼­¹ö ÇÁ·Ï½Ã¿Í´Â ¸®¸ðÆ®ÀÇ XML-RPC À̸§ °ø°£ÀÇ ÇÁ·Ï½Ã°¡ µÈ´Ù PHP ¿ÀºêÁ§Æ®·Î, ³×ÀÌÆ¼ºêÀÎ PHP ¿ÀºêÁ§Æ®¿Í °¡´ÉÇÑ ÇÑ ¶È°°ÀÌ Ãë±ÞÇÒ ¼ö ÀÖµµ·Ï(µíÀÌ) ÇÑ °ÍÀÔ´Ï´Ù.

¼­¹ö ÇÁ·Ï½ÃÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÏ·Á¸é , Zend_XmlRpc_Client ÀÇ ÀνºÅϽº ¸Þ¼Òµå getProxy() (À»)¸¦ ÄÝ ÇÕ´Ï´Ù.À̰ÍÀº Zend_XmlRpc_Client_ServerProxy ÀÇ ÀνºÅϽº¸¦ µ¹·ÁÁÝ´Ï´Ù. ¼­¹ö ÇÁ·Ï½Ã¿¡ ´ëÇÑ ¸ðµç ¸Þ¼Òµå ÄÝÀº ¸®¸ðÆ®¿¡ Àü¼Û µÇ¾î ÆÄ¶ó¹ÌÅ͵µ Åë»óÀÇ PHP ¸Þ¼Òµå¿Í °°ÀÌ °Ç³×ÁÙ ¼ö ÀÖ½À´Ï´Ù.

·Ê 42.3. µðÆúÆ® À̸§ °ø°£ÀÇ ÇÁ·Ï½Ã


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

$client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');

$server $client->getProxy();           // µðÆúÆ®ÀÇ À̸§ °ø°£ÀÇ ÇÁ·Ï½Ã¸¦ ÀÛ¼ºÇÕ´Ï´Ù

$hello $server->test->sayHello(12);  // test.Hello(1, 2) ÇÏ "hello" (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù

getProxy() ÀÇ ¿É¼ÇÀÇ Àμö·Î, ¸®¸ðÆ® ¼­¹öÀÇ ¾î´À À̸§ °ø°£À» ÇÁ·Ï½Ã ÇÏ´ÂÁö¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̸§ °ø°£À» ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ø °æ¿ì´Â, µðÆúÆ®ÀÇ À̸§ °ø°£À» ÇÁ·Ï½Ã ÇÕ´Ï´Ù. ´ÙÀ½ÀÇ ¿¹¿¡¼­´Â,test À̸§ °ø°£ÀÌ ÇÁ·Ï½ÃÀÇ ´ë»óÀÌ µË´Ï´Ù.

·Ê 42.4. ÀÓÀÇÀÇ À̸§ °ø°£ÀÇ ÇÁ·Ï½Ã


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

$client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');

$test  $client->getProxy('test');     // "test" À̸§ °ø°£ÀÇ ÇÁ·Ï½Ã¸¦ ÀÛ¼ºÇÕ´Ï´Ù

$hello $test->sayHello(12);         // test.Hello(1,2) ÇÏ "hello" (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù

¸®¸ðÆ® ¼­¹ö°¡ »óÀÚÀåÀÇ À̸§ °ø°£À» ¼­Æ÷Æ®Çϰí ÀÖ´Â °æ¿ì´Â, ¼­¹ö ÇÁ·Ï½Ã¿¡¼­µµ ±×°ÍÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.¿¹¸¦ µé¾î, À§ÀÇ ¿¹ÀÇ ¼­¹ö°¡ ¸Þ¼Òµå test.foo.bar() (À»)¸¦ º¸°ü À¯ÁöÇϰí ÀÖ´Â °æ¿ì´Â,$test->foo->bar() (¿Í)°ú °°ÀÌ ÄÝ ÇÕ´Ï´Ù.

42.2.5. ¿¡·¯ ó¸®

XML-RPC ÀÇ ¸Þ¼Òµå ÄÝ·Î ¹ß»ýÇÒ °¡´É¼ºÀÌ ÀÖ´Â ¿¡·¯¿¡´Â, 2Á¾·ùÀÖ½À´Ï´Ù. HTTP ÀÇ ¿¡·¯¿Í XML-RPC ÀÇ fault ÀÔ´Ï´Ù.Zend_XmlRpc_Client (Àº)´Â ÀÌ·¯ÇÑ ¾çÂÊ ¸ðµÎ¸¦ ÀÌÇØÇϹǷÎ, °¢°¢ µ¶¸³ÇØ °ËÃâ°ú 󸮰¡ °¡´ÉÇÕ´Ï´Ù.

42.2.5.1. HTTP ¿¡·¯

HTTP ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì, Áï, ¿¹¸¦ µé¾î ¸®¸ðÆ® HTTP ¼­¹ö°¡ 404 Not Found (À»)¸¦ µ¹·ÁÁØ °Í °°Àº °æ¿ì¿¡ Zend_XmlRpc_Client_HttpException ÇÏÁö¸¸ ½½·Î¿ì µË´Ï´Ù.

·Ê 42.5. HTTP ¿¡·¯ÀÇ Ã³¸®


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

$client = new Zend_XmlRpc_Client('http://foo/404');

try {

    
$client->call('bar', array($arg1$arg2));

} catch (
Zend_XmlRpc_Client_HttpException $e) {

    
// $e->getCode() ÇÏ 404 (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù
    // $e->getMessage() ÇÏ "Not Found" (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù

}

XML-RPC Ŭ¶óÀ̾ðÆ®ÀÇ »ç¿ë¹ý¿¡ °ü°è¾øÀÌ,HTTP ¿¡·¯°¡ ¹ß»ýÇÏ¸é ¹Ýµå½Ã Zend_XmlRpc_Client_HttpException ÇÏÁö¸¸ ½½·Î¿ì µË´Ï´Ù.

42.2.5.2. XML-RPC Fault

XML-RPC ÀÇ fault (Àº)´Â,PHP ÀÇ ¿¹¿Ü¿Í ´àÀº °ÍÀÔ´Ï´Ù.À̰ÍÀº XML-RPC ¸Þ¼ÒµåÀÇ ÄݷκÎÅÍ µ¹·ÁÁÖ¾îÁö´Â Ưº°ÇÑ ÇüÅ·Î, ¿¡·¯ ÄÚµå¿Í ¿¡·¯ ¸Þ¼¼Áö¸¦ Æ÷ÇÔÇÕ´Ï´Ù.XML-RPC ÀÇ fault (Àº)´Â,Zend_XmlRpc_Client ÀÇ »ç¿ë Àå¸é¿¡ ÀÇÇØ¼­ ó¸® ¹æ¹ýÀÌ ´Ù¸¨´Ï´Ù.

call() ¸Þ¼Òµå³ª ¼­¹ö ÇÁ·Ï½Ã ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇϰí ÀÖ´Â °æ¿ì¿¡´Â, XML-RPC ÀÇ fault ÇÏÁö¸¸ ¹ß»ýÇϸé Zend_XmlRpc_Client_FaultException ÇÏÁö¸¸ ½½·Î¿ì µË´Ï´Ù. ÀÌ ¿¹¿ÜÀÇ ÄÚµå¿Í ¸Þ¼¼Áö´Â, ¿ø·¡ÀÇ XML-RPC ÀÇ fault ¸®½ºÆù½ºÀÇ °ª¿¡ ´ëÀÀÇÏ´Â °ÍÀÌ µË´Ï´Ù.

·Ê 42.6. XML-RPC Fault ÀÇ Ã³¸®


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

$client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');

try {

    
$client->call('badMethod');

} catch (
Zend_XmlRpc_Client_FaultException $e) {

    
// $e->getCode() ÇÏ 1 (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù
    // $e->getMessage() ÇÏ "Unknown method" (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù

}

call() ¸Þ¼Òµå¸¦ »ç¿ëÇØ ¸®Äù½ºÆ®¸¦ ÀÛ¼ºÇßÀ» °æ¿ì´Â, fault ½Ã¿¡ Zend_XmlRpc_Client_FaultException ÇÏÁö¸¸ ½½·Î¿ì µË´Ï´Ù.fault (À»)¸¦ Æ÷ÇÔÇÑ´Ù Zend_XmlRpc_Response ¿ÀºêÁ§Æ®¸¦ ÃëµæÇÏ·Á¸é getLastResponse() (À»)¸¦ ÄÝ ÇÕ´Ï´Ù.

doRequest() ¸Þ¼Òµå·Î ¸®Äù½ºÆ®¸¦ ÀÛ¼ºÇßÀ» °æ¿ì´Â, ¿¹¿Ü´Â ½½·Î¿ì µÇÁö ¾Ê½À´Ï´Ù.±× ´ë½Å¿¡,falut (À»)¸¦ Æ÷ÇÔÇÑ´Ù Zend_XmlRpc_Response ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù. À̰ÍÀ» Á¶»çÇÏ·Á¸é , Zend_XmlRpc_Response ÀÇ ÀνºÅϽº ¸Þ¼Òµå isFault() (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.

42.2.6. ¼­¹öÀÇ ÀÎÆ®·Î½ºÆäÅ©¼Ç

XML-RPC ¼­¹ö¾È¿¡´Â,XML-RPC ÀÇ system. À̸§ °ø°£¿¡¼­ µðÆåÆ®ÀÇ ÀÎÆ®·Î½ºÆäÅ©¼Ç¸Þ¼Úµå¸¦ ¼­Æ÷Æ®Çϰí ÀÖ´Â °Íµµ ÀÖ½À´Ï´Ù. Zend_XmlRpc_Client (Àº)´Â, ÀÌ ±â´ÉÀ» °¡Áö´Â ¼­¹öµµ ¼­Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù.

Zend_XmlRpcClient ÀÇ getIntrospector() ¸Þ¼Òµå¸¦ ÄÝ Çϸé, Zend_XmlRpc_Client_ServerIntrospection ÀÇ ÀνºÅϽº¸¦ ÃëµæÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀ» »ç¿ëÇØ ¼­¹öÀÇ ÀÎÆ®·Î½ºÆäÅ©¼ÇÀ» ½Ç½ÃÇÕ´Ï´Ù.

42.2.7. ¸®Äù½ºÆ®·ÎºÎÅÍ ¸®½ºÆù½º¿¡

Zend_XmlRpc_Client ÀÇ ÀνºÅϽº ¸Þ¼Òµå call() ¾ÈÀ¸·Î ÇàÇØÁö°í ÀÖ´Â °ÍÀº, ¿ì¼± ¸®Äù½ºÆ® ¿ÀºêÁ§Æ® (Zend_XmlRpc_Request) (À»)¸¦ ÀÛ¼ºÇØ, ±×°ÍÀ» ´Ù¸¥ ¸Þ¼Òµå doRequest() ±×¸®°í ¼Û½ÅÇØ, ±× °á°ú µ¹·ÁÁÖ¾îÁö´Â ¸®½ºÆù½º ¿ÀºêÁ§Æ® (Zend_XmlRpc_Response) (À»)¸¦ ÃëµæÇÏ´Â °ÍÀÔ´Ï´Ù.

doRequest() ¸Þ¼Òµå´Â, ±×°Í ´Üü·Î Á÷Á¢ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

·Ê 42.7. ¸®Äù½ºÆ®·ÎºÎÅÍ ¸®½ºÆù½º¿¡ÀÇ Ã³¸®


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

$client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');

$request = new Zend_XmlRpc_Request();
$request->setMethod('test.sayHello');
$request->setParams(array('foo''bar'));

$client->doRequest($request);

// $server->getLastRequest() ÇÏ Zend_XmlRpc_Request ÀÇ ÀνºÅϽº¸¦ µ¹·ÁÁÝ´Ï´Ù
// $server->getLastResponse() ÇÏ Zend_XmlRpc_Response ÀÇ ÀνºÅϽº¸¦ µ¹·ÁÁÝ´Ï´Ù

Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍ XML-RPC ¸Þ¼ÒµåÀÇ ÄÝÀÌ (call() ¸Þ¼Òµå, doRequest() ¸Þ¼Òµå ȤÀº ¼­¹ö ÇÁ·Ï½Ã¿¡ ÀÇÇØ¼­) ÇàÇØÁ³À» °æ¿ì´Â, ¸¶Áö¸· ¸®Äù½ºÆ® ¿ÀºêÁ§Æ® ¹× ±× ÀÀ´äÀÌ Ç×»ó getLastRequest() ¹× getLastResponse() ±×¸®°í ÃëµæÇÒ ¼ö ÀÖ½À´Ï´Ù.

42.2.8. HTTP Ŭ¶óÀ̾ðÆ®ÀÇ Å×½ºÆ®

Áö±Ý±îÁöÀÇ ¸ðµç ¿¹¿¡¼­´Â,HTTP Ŭ¶óÀ̾ðÆ®ÀÇ ¼³Á¤À» ½Ç½ÃÇÏÁö ¾Ê¾Ò½À´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì,Zend_Http_Client ÀÇ »õ·Î¿î ÀνºÅϽº°¡ µðÆúÆ®ÀÇ ¿É¼ÇÀ¸·Î ÀÛ¼ºµÇ¾î ±×°ÍÀ» ÀÚµ¿ÀûÀ¸·Î Zend_XmlRpc_Client ±×¸®°í »ç¿ëÇÕ´Ï´Ù.

HTTP Ŭ¶óÀÌ¾ðÆ®´Â, ¾ðÁ¦¶óµµ getHttpClient() ¸Þ¼Òµå·Î ÃëµæÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì´Â µðÆúÆ®ÀÇ HTTP Ŭ¶óÀÌ¾ðÆ®·Î ¿ë¹«°¡ ÃæºÐÇϰÚÁö¿ä. ±×·¯³ª,setHttpClient() (À»)¸¦ »ç¿ëÇÏ´Â °ÍÀ¸·Î, ´Ù¸¥ HTTP Ŭ¶óÀ̾ðÆ®ÀÇ ÀνºÅϽº¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

setHttpClient() (Àº)´Â, ƯÈ÷ ´Üü Å×½ºÆ® ½Ã¿¡ À¯¿ëÇÕ´Ï´Ù. Zend_Http_Client_Adapter_Test (¿Í)°ú Á¶ÇÕÇÏ´Â °ÍÀ¸·Î, Å×½ºÆ®¿ëÀÇ ¸®¸ðÆ® ¼­ºñ½ºÀÇ ¸ñÅ©¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¹æ¹ýÀ» Á¶»çÇÏ·Á¸é ,Zend_XmlRpc_Client ÀÚüÀÇ ´Üü Å×½ºÆ®¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.