XMLRPCのプラグイン作成
- » s-sugamura > XMLRPCのプラグイン作成 @ 2013/6/20 19:16
- s-sugamura > Re: XMLRPCのプラグイン作成 @ 2013/6/21 8:59
s-sugamura > XMLRPCのプラグイン作成 @ 2013/6/20 19:16 |
---|
初めて投稿させていただきます。
-------------------- BaserCMSのバージョン:2.1.1 レンタルサーバー名:独自 スマートURLの利用:OFF 設置フォルダ:サブフォルダ 利用しているデータベース:MySQL PHPスキル(自己評価):B OSの種類:Windows8/ZAMPP 1.7.1 PHPのバージョン:5.2.9 データベース種類・バージョン:MySQL 5.1 -------------------- XMPRPCによる投稿をやりたいと思っています。 http://scripts.incutio.com/xmlrpc/basic-server-construction.php のサイトからIXRを取得し、サンプルを参考にプラグインを作成しているのですが、うまくいきません。 以下プラグインコードです。 App::import('Controller', 'Plugins'); class XmlrpcController extends PluginsController { var $name = 'Xmlrpc'; var $uses = array('Plugin', 'Content'); var $components = array('BcAuth','Cookie','BcAuthConfigure'); function index() { Configure::write("debug", 1); $this->autoRender = false; include('IXR_Library.inc.php'); $server = new IXR_Server(array( 'demo.sayHello' => 'this:sayHello', 'demo.addTwoNumbers' => 'this:addTwoNumbers' )); } function sayHello($args) { return 'Hello!'; } function addTwoNumbers($args) { $number1 = $args[0]; $number2 = $args[1]; return $number1 + $number2; } } プラグインの登録は完了しており、ブラウザからアクセスすると XML-RPC server accepts POST requests only. とメッセージがでます。 XMLRPCクライアントを作成して、アクセスすると object(XML_RPC2_ReceivedInvalidStatusCodeException)#3 (6) { ["message:protected"]=> string(52) "Curl returned non 200 HTTP code: 302. Response body:" とエラーがでます。 XMLクライアントはPEARを使用しています。 以下クライアントです。 require_once("./XML/RPC2/Client.php"); $prefix = 'demo.'; // プレフィックス $encoding = 'sjis'; // 文字エンコーディング $uri = 'http://127.0.0.1/~basercms/index.php/xmlrpc/index'; $options = array('prefix' => $prefix, 'encoding' => $encoding); $client = XML_RPC2_Client::create($uri, $options); // XML-RPXクライアントの生成 $entry_id = 0; // ブログ記事ID $user = 'admin'; // ウェブサービスのユーザー名 $pass = 'password'; // ウェブサービスのパスワード try { $result = $client->sayHello($entry_id, $user, $pass); // API起動 var_dump($result); } catch (Exception $e) { var_dump($e); } $serverを作成したあと、functionをコールする際にパラメータが受け取れない。もしくは返答が返せないのではと想像していますが、追い方が判らないのでまだ判断できていません。 この方法の解決または別の方法でも良いのですが、何か良いアイディアはありませんか? よろしくお願いします。 |