Как получить доступ к данным XML-RPC из PHP?

Удаленный сервер отправляет XML на мой сервер через RPC. Я вижу XML в своих журналах Apache, когда включаю безопасность модов, но я не могу получить доступ к XML из своего PHP-скрипта. Предполагается, что это запрос POST, но массив $_POST пуст.

Насколько я понимаю, RPC должен вызывать мою функцию с данными, но, похоже, этого не происходит.

Этот смехотворно простой скрипт должен записывать XML в лог-файл, но ничего не делает:

include_once('xmlrpc/xmlrpc.inc');
include_once('xmlrpc/xmlrpcs.inc');

function ImportOrders($xml)
{
   $FH=fopen('Log/In.txt','a');
   fwrite($FH,'Package recieved:'.print_r($xml,true)."\n");

   // set appropriate response code
   $response = 0; // see defined response codes for this application
   // send success or failure response code
   if($response == 0)
      return new xmlrpcresp(new xmlrpcval($response, "string"));
   else
      return new xmlrpcresp(0, $response, $error_message);
}

$Server = new xmlrpc_server(
   array("ImportOrders"=>array("function"=>"ImportOrders")
   )
);

Они присылают мне это:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<methodCall>
<methodName>ImportOrders</methodName>
<params>
<param>
<value><int>2</int></value>
</param>
<param>
<value><struct>
<member><name>order_0</name>
<value><struct>
<member><name>order_id</name>
....

Почему моя функция не вызывается?!?


person Nick    schedule 02.04.2011    source источник


Ответы (1)


Понятно! По-видимому, данные находятся в «$GLOBALS['HTTP_RAW_POST_DATA']».

require 'kd_xmlrpc.php';
$xmlrpc_request = XMLRPC_parse($GLOBALS['HTTP_RAW_POST_DATA']);  
$methodName = XMLRPC_getMethodName($xmlrpc_request);    
$params = XMLRPC_getParams($xmlrpc_request);    

ImportOrders($params);

function ImportOrders($params)
{
   $FH=fopen('Log/In.txt','a');
   fwrite($FH,'OrderDataRes has been loaded.'."\n");
   fwrite($FH,'$params: '.print_r($params,true)."\n");
}

Я также использую другую библиотеку из: http://www.keithdevens.com/software/xmlrpc/source.php

person Nick    schedule 02.04.2011