Как реализовать на локальном клиенте xml_rpc в PHP? - PullRequest
0 голосов
/ 10 ноября 2011

Здравствуйте, у меня есть проблемы с написанием простого XML-RPC-клиента на PHP. Это мой код PHP:

$site_name  = "Mikangali";
$site_url   = "http://www.mikangali.com";
$site_url   = "http://localhost";

$request = xmlrpc_encode_request("weblogUpdates.ping", array($site_name, $site_url));

#echo $request;

$http_request = array(
    'method'    => "POST",
    'header'    => "Content-Type: text/xml\r\nUser-Agent: PHPRPC/1.0\r\nHost: rpc.technorati.com\r\n",
    'content'   => $request
);

#print_r($http_request) ;

$context = stream_context_create(array('http' => $http_request));

$file = @file_get_contents($server_url, false, $context);

 if ($file==false) { 

    #handle error here... 
    display_mssg("error","! we get a pb !");
 }

$response = xmlrpc_decode($file);

if (is_array($response) and xmlrpc_is_fault($response)){
    display_mssg("error","Failed to ping ".$site_name);
} 
else {
    display_mssg("success","Successfully pinged ".$site_name); 
    var_dump($response);
    var_dump($file);
}

Я не могу понять, почему он входит в условие «успех» и показывает мне, что:

! we get a pb !

Successfully pinged Technorati
null
boolean false

Спасибо за помощь. Обратите внимание, что расширение XML-RPC PHP активировано на моем локальном wamp-сервере.

1 Ответ

0 голосов
/ 10 ноября 2011

Конечно, потому что xmlrpc_decode(false) возвращается null $file = false, потому что у вас проблема. (=> ! мы получаем pb !)

Таким образом, вы не попадаете в if, который проверяет, что $response является массивом.

...