dev/php_xml_rpc
*PHPとPEARでXML-RPC [[index]] 2005-03-01 2014-04-14 リンク切れ等修正 **はじめ ブログを色々と調べているうちにXML-RPCというものにたどり着きました。 面白そうなので実験。 **実験材料 -WindowsXP+SP2 -Apache2.0.52 -PHP4.3.9 -PEARのXML_RPC1.1.0 **調査 -[[XML-RPC Specification>http://xmlrpc.com/spec.md]] XML-RPC仕様書←仕様書の短さに感動。 -[[XML-RPC HOWTO>https://linuxjf.osdn.jp/JFdocs/XML-RPC-HOWTO/]] 解説や実装例が多数あって、XML-RPCやる気になります。 -[[drifting blog by snotch: movabletype XML-RPC 002>https://bloggers.ja.bz/sunouchi/archives/2003/05/movabletype_xml_1.php]] どうやらPHPではPEARを使うと良さそう。最近PEAR使っているのでPEARに決定。 -[[Package Information: XML_RPC>https://pear.php.net/package/XML_RPC]] 本家PEARのマニュアルも当然参考に。 **実装例 ***サーバ実装例 XML-RPC HOWTOの例をPEARで書いてみました。 エラー処理入っていませんが、そこはご愛嬌。 >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"))); > >?> ****実行結果 &img(php_xml_rpc_server.png); ***クライアント実装例 XML-RPC HOWTOの例をPEARで書いてみました。 > > >
XML-RPC(PHP) Client Demo
> > >
XML-RPC(PHP) Client Demo
> >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() ."
"; > print "The XML received:
" . $response->serialize(); > print "
"; >}else{ > print "Fault Code: " . $response->faultCode() . "
"; > print "Fault Reason: " . $response->faultString() . "
"; >} >?> > > > ****実行結果 &img(php_xml_rpc_client.png); **感想 「XML-RPCは情報が少ない、その理由はXML-RPCが簡単だから云々」みたいな事を書いていた人がいましたが、まさにそうかも知れません。
2024-11-21 18:11:56 32400