Нужен пример кода клиента XML-RPC для PHP5
нужен учебник или какая-то инструкция по использованию библиотеки XML-RPC, встроенной в PHP (версия PHP версии 5.2.6) для клиента XML-RPC. Сервер на Python и работает.
Google и php.net подводят меня.
обновление:
за phpinfo у меня есть файла xmlrpc-Эпи В. 0.51 установлен. Я посетил http://xmlrpc-epi.sourceforge.net/ но раздел примеров xmlrpc-epi-php слева показал мне sf.net ' S версия a 404.
обновление 2:
Я собираюсь использовать http://phpxmlrpc.sourceforge.net/ и, надеюсь, это сработает для меня.
Update3:
код на http://phpxmlrpc.sourceforge.net/ было просто, и я начал работать.
не закрывая вопрос. Если кто-то хочет перезвонить с ультра-простыми решениями, это было бы здорово!
7 ответов
очень простой клиент 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);
поиск того же решения. Это супер простой класс, который теоретически может работать с любым сервером 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;
}
}
?>
Я написал простую объектно-ориентированную оболочку, которая делает ее такой же простой, как:
require_once('ripcord.php'); $client = ripcord::xmlrpcClient( $url ); $score = $client->method( $argument, $argument2, .. );
см http://code.google.com/p/ripcord/wiki/RipcordClientManual для получения дополнительной информации и ссылки для скачивания.
Я нашел это решение в 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 ) )
кроме того, fxmlrpc (при использовании NativeSerializer
и NativeParser
) - это тонкая обертка вокруг ext/xmlrpc
.
из официальной ссылки php http://www.php.net/manual/en/ref.xmlrpc.php Используйте пример Стеф (внизу) в качестве отправной точки. Он использует тот же сервер и его легко настроить.То есть, если вы не хотите использовать внешнюю библиотеку или фреймворк. Но если вы посмотрите на http://framework.zend.com/manual/1.12/en/zend.xmlrpc.server.html