10

XML-RPC クライアント用の PHP (バージョン PHP バージョン 5.2.6) に組み込まれている XML-RPC ライブラリの使用方法に関するチュートリアルまたは説明が必要です。サーバーは Python で動作します。

Google と php.net は失敗しています。

アップデート:

phpinfo によると、xmlrpc-epi v. 0.51 がインストールされています。http://xmlrpc-epi.sourceforge.net/にアクセスしましたが、左側の xmlrpc-epi-php の例のセクションに sf.net の 404 バージョンが表示されました。

アップデート2:

私はhttp://phpxmlrpc.sourceforge.net/を使用する予定で、うまくいくことを願っています。

Update3:

http://phpxmlrpc.sourceforge.net/のコードは簡単で、うまくいきました。

質問を閉じません。超シンプルなソリューションに参加したい人がいれば、それは素晴らしいことです!

4

8 に答える 8

13

非常に単純な xmlrpc クライアントです。私は cURL クラスを使用しています。次から入手できます: https://github.com/dcai/curl/blob/master/src/dcai/curl.php

class xmlrpc_client {
    private $url;
    function __construct($url, $autoload=true) {
        $this->url = $url;
        $this->connection = new curl;
        $this->methods = array();
        if ($autoload) {
            $resp = $this->call('system.listMethods', null);
            $this->methods = $resp;
        }
    }
    public function call($method, $params = null) {
        $post = xmlrpc_encode_request($method, $params);
        return xmlrpc_decode($this->connection->post($this->url, $post));
    }
}
header('Content-Type: text/plain');
$rpc = "http://10.0.0.10/api.php";
$client = new xmlrpc_client($rpc, true);
$resp = $client->call('methodname', array());
print_r($resp);
于 2009-04-05T07:13:01.173 に答える
4

同じ解決策を探しています。これは、理論的にはどの XMLRPC サーバーでも機能する非常に単純なクラスです。20分で完成させたので、内省、エラー処理の改善など、まだ多くのことが望まれています.

file: xmlrpcclient.class.php

<?php

/**
 * XMLRPC Client
 *
 * Provides flexible API to interactive with XMLRPC service. This does _not_
 * restrict the developer in which calls it can send to the server. It also
 * provides no introspection (as of yet).
 *
 * Example Usage:
 *
 * include("xmlrpcclient.class.php");
 * $client = new XMLRPCClient("http://my.server.com/XMLRPC");
 * print var_export($client->myRpcMethod(0));
 * $client->close();
 *
 * Prints:
 * >>> array (
 * >>>   'message' => 'RPC method myRpcMethod invoked.',
 * >>>   'success' => true,
 * >>> )
 */

class XMLRPCClient
{
    public function __construct($uri)
    {
        $this->uri = $uri;
        $this->curl_hdl = null;
    }

    public function __destruct()
    {
        $this->close();
    }

    public function close()
    {
        if ($this->curl_hdl !== null)
        {
            curl_close($this->curl_hdl);
        }
        $this->curl_hdl = null;
    }

    public function setUri($uri)
    {
        $this->uri = $uri;
        $this->close();
    }

    public function __call($method, $params)
    {
        $xml = xmlrpc_encode_request($method, $params);

        if ($this->curl_hdl === null)
        {
            // Create cURL resource
            $this->curl_hdl = curl_init();

            // Configure options
            curl_setopt($this->curl_hdl, CURLOPT_URL, $this->uri);
            curl_setopt($this->curl_hdl, CURLOPT_HEADER, 0); 
            curl_setopt($this->curl_hdl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($this->curl_hdl, CURLOPT_POST, true);
        }

        curl_setopt($this->curl_hdl, CURLOPT_POSTFIELDS, $xml);

        // Invoke RPC command
        $response = curl_exec($this->curl_hdl);

        $result = xmlrpc_decode_request($response, $method);

        return $result;
    }
}

?>
于 2011-05-12T19:08:28.477 に答える
3

このソリューションはhttp://code.runnable.com/UnEjkT04_CBwAAB4/how-to-create-a-xmlrpc-server-and-a-xmlrpc-client-for-phpで見つかりました

webfaction api でのログインの例

// login is the method in the xml-rpc server and username and password
// are the params
$request = xmlrpc_encode_request("login", array('username', 'password'));

$context = stream_context_create(array('http' => array(
'method' => "POST",
'header' => "Content-Type: text/xml\r\nUser-Agent: PHPRPC/1.0\r\n",
'content' => $request
)));

$server = 'https://api.webfaction.com/'; // api url
$file = file_get_contents($server, false, $context);

$response = xmlrpc_decode($file);

print_r($response);

次のようなものが表示されます。

Array ( [0] => 5d354f42dcc5651fxe6d1a21b74cd [1] => Array ( [username] => yourusername [home] => /home [mail_server] => Mailbox14 [web_server] => Webxxx [id] => 123456 ) )
于 2015-08-11T22:00:41.597 に答える
3

次のように簡単にする単純なオブジェクト指向ラッパーを作成しました。

    require_once('ripcord.php');
    $client = ripcord::xmlrpcClient( $url );
    $score = $client->method( $argument, $argument2, .. );

見る詳細とダウンロード リンクについては、http://code.google.com/p/ripcord/wiki/RipcordClientManualを参照してください。

于 2010-08-12T11:38:50.783 に答える
1

WordpressにはXML-RPC.phpファイルがあり、それを見てください..役立つかもしれません

于 2009-04-05T06:08:55.273 に答える
0

さらに、fxmlrpc (NativeSerializerおよび と一緒に使用する場合NativeParser) は、 の薄いラッパーext/xmlrpcです。

于 2013-03-30T00:38:46.113 に答える
0

PHP 公式リンクhttp://www.php.net/manual/en/ref.xmlrpc.phpからsteph の例 (下部) を出発点として使用します。彼は同じサーバーを使用しており、セットアップが簡単です。これは、外部ライブラリまたはフレームワークを使用したくない場合です。しかし、もしそうならhttp://framework.zend.com/manual/1.12/en/zend.xmlrpc.server.htmlを見てください

于 2013-04-12T11:59:46.523 に答える