본문 바로가기
프로그램 (PHP,Python)

PHP로 XML-RPC 사용하기

by 날으는물고기 2009. 4. 24.

PHP로 XML-RPC 사용하기

Edd Dumbill는 PHP용 XML-RPC 모듈을 만들었다. 모듈은 UsefulInc XML-RPC website에서 구할 수 있다.

파일을 내려받아 압축을 푼 다음, xmlrpc.incxmlrpcs.inc 의 두 파일을 PHP 스크립트와 같은 디렉토리에 복사하면 된다.

1. PHP 클라이언트

다음의 스크립트는 웹페이지에 XML-RPC 호출 루틴을 추가하는 방법을 보여준다.

<html>
<head>
<title>XML-RPC PHP Demo</title>
</head>
<body>
<h1>XML-RPC PHP Demo</h1>

<?php
include 'xmlrpc.inc';

// Make an object to represent our server.
$server = new xmlrpc_client('/api/sample.php',
'xmlrpc-c.sourceforge.net', 80);

// Send a message to the server.
$message = new xmlrpcmsg('sample.sumAndDifference',
array(new xmlrpcval(5, 'int'),
new xmlrpcval(3, 'int')));
$result = $server->send($message);

// Process the response.
if (!$result) {
print "<p>Could not connect to HTTP server.</p>";
} elseif ($result->faultCode()) {
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>

웹서버에서 PHP 스크립트가 실행되지 않는다면 PHP 웹사이트를 참조하라.

2. PHP 서버

다음의 스크립트는 PHP를 이용하여 XML-RPC 서버에 적용하는 방법을 보여준다.

<?php
include 'xmlrpc.inc';
include 'xmlrpcs.inc';

function sumAndDifference ($params) {

// Parse our parameters.
$xval = $params->getParam(0);
$x = $xval->scalarval();
$yval = $params->getParam(1);
$y = $yval->scalarval();

// Build our response.
$struct = array('sum' => new xmlrpcval($x + $y, 'int'),
'difference' => new xmlrpcval($x - $y, 'int'));
return new xmlrpcresp(new xmlrpcval($struct, 'struct'));
}

// Declare our signature and provide some documentation.
// (The PHP server supports remote introspection. Nifty!)
$sumAndDifference_sig = array(array('struct', 'int', 'int'));
$sumAndDifference_doc = 'Add and subtract two numbers';

new xmlrpc_server(array('sample.sumAndDifference' =>
array('function' => 'sumAndDifference',
'signature' => $sumAndDifference_sig,
'docstring' => $sumAndDifference_doc)));
?>

위의 스크립트를 웹서버에서 http://localhost/path/sumAndDifference.php와 같은 방식으로 실행시킬 수 있다.


출처 : http://wiki.kldp.org/HOWTO//html/XML-RPC-HOWTO/

728x90

댓글