상세 컨텐츠

본문 제목

XML RPC 예 (PHP)

.Net General/.Net XML-RPC

by 탑~! 2011. 11. 17. 10:41

본문

◈PHP Server

 

<?

    include "xmlrpc.inc";

    include "xmlrpcs.inc";

    // xmlrpc 기능을 사용하기 위한 모듈 import

 

    function sumAndDifference($params)

    {

        //파라미터 파싱

        $oneVal = $params->getParam(0);

        $one = $oneVal->scalarval();

        $twoVal = $params->getParam(1);

        $two = $twoVal->scalarval();

 

        //return 값 만들기

        $struct = array('sum' => new xmlrpcval($x + $y, 'int'),

                             'difference' => new xmlrpcval($x - $y, 'int'));

 

        return new xmlrpcresp(new xmlrpcval($struct, 'struct'));

    }

 

    //signature and documentation 작성

    $sumAndDifference_sig = array(array('struct', 'int', 'int'));

    $sumAndDifference_doc = 'Add and subtract two number';

 

    new xmlrpc_server(array('sample.sumAndDifference' =>

                                       array('function' => 'sumAndDifference',

                                               'signature' => $sumAndDifference_sig,

                                               'docstring' => $sumAndDifference_doc)));

?>

 

◈PHP Client - 웹페이지에 XML-RPC 호출 루틴을 추가

<html>

<head>

<title>XML-RPC PHP Demo</title>

</head>

 

<body>

 

<?

    include 'xmlrpc.inc';

 

    //XML-RPC 서버 선언

    $server = new xmlrpc_client('PATH/sample.php',

                                             'DOMAIN', '80');

 

    //XML-RPC 서버로 보낼 메시지

    $message = new xmlrpcmsg('sample.sumAndDifference',

                                             array(new xmlrpcval(5, 'int'),

                                             array(new xmlrpcval(3, 'int')));

 

    $result => $server->send($message);

 

    //결과

    if(!$result)

    {

        print "<p>Could not connect to HTTP server.</p>";

    }

    elseif($result->faultString())

    {

        print "<p>XML-RPC Fault #" . $result->faultCode() . ": " . $result->faultString();

    }

    else

    {

        $struct = $result->value();

        $sumval = $struct->structmem('sum');

        $sum = $sumval->scalarval();

        $differenceval = $struct->structmem('difference');

        $difference = $differenceval->scalarval();

 

        print "<p>Sum: " . htmlentities($sum) . ", Difference: " . htmlentities($difference) . "</p>" ;

    }

?>

 

</body>

</html>

 

이 예제는

http://wiki.kldp.org/HOWTO//html/XML-RPC-HOWTO/xmlrpc-howto-php.html

에 있는 예제 이다.


출처 : http://blog.naver.com/9namy

'.Net General > .Net XML-RPC' 카테고리의 다른 글

XML RPC Spec  (0) 2011.11.17
XML RPC 예 (PHP)  (0) 2011.11.17
XML RPC 예 (PHP)  (0) 2011.11.17
XML RPC 란 ?  (0) 2011.11.17
XML RPC 관련 Site  (0) 2011.11.17

관련글 더보기