PHPとPEARでXML-RPC
Suns & Moon Laboratory
2005-03-01
2014-04-14 リンク切れ等修正
はじめ
ブログを色々と調べているうちにXML-RPCというものにたどり着きました。
面白そうなので実験。
実験材料
- WindowsXP+SP2
- Apache2.0.52
- PHP4.3.9
- PEARのXML_RPC1.1.0
調査
実装例
サーバ実装例
XML-RPC HOWTOの例をPEARで書いてみました。
エラー処理入っていませんが、そこはご愛嬌。
<?php
require_once("XML/RPC.php");
require_once("XML/RPC/Server.php");
$GLOBALS['XML_RPC_defencoding'] = "UTF-8";
function foo ($params) {
global $XML_RPC_erruser; // import user errcode value
$p1 = $params->getParam(0);
$p2 = $params->getParam(1);
$v1 = $p1->scalarval();
$v2 = $p2->scalarval();
$value = new XML_RPC_Value($v1+$v2, "int");
return new XML_RPC_Response($value);
}
//RPCの実行
$s = new XML_RPC_Server(array("sample.sumAndDifference" => array("function" => "foo")));
?>
実行結果
クライアント実装例
XML-RPC HOWTOの例をPEARで書いてみました。
<html>
<head>
<title>XML-RPC(PHP) Client Demo</title>
</head>
<body>
<h1>XML-RPC(PHP) Client Demo</h1>
<?php
require_once("XML/RPC.php");
$GLOBALS['XML_RPC_defencoding'] = "UTF-8";
//クライアントの作成
$xmlrpc_host = "localhost";
$xmlrpc_path = "/~test/xml_rpc/server.php";
$c = new XML_RPC_client( $xmlrpc_path, $xmlrpc_host, 80 );
//メッセージ作成
$params = array(new XML_RPC_Value( 5, 'int' )
,new XML_RPC_Value( 3, 'int' ));
$message = new XML_RPC_Message('sample.sumAndDifference',$params);
//メッセージ送信
$response = $c->send($message);
// Process the response.
if (!$response->faultCode()) {
$v = $response->value();
print "Value: ". $v->scalarval() ."<br>";
print "The XML received:<blockquote>" . $response->serialize();
print "</blockquote>";
}else{
print "Fault Code: " . $response->faultCode() . "<br>";
print "Fault Reason: " . $response->faultString() . "<br>";
}
?>
</body>
</html>
実行結果
感想
「XML-RPCは情報が少ない、その理由はXML-RPCが簡単だから云々」みたいな事を書いていた人がいましたが、まさにそうかも知れません。
2024-08-14 11:00:27 32400