2009-05-28 1 views
1

Я пытаюсь опубликовать простую текстовую строку на моем сайте drupal. Это нужно сделать с помощью metaWeblog.newPost, потому что blogger.newPost устанавливает весь текст как заголовок. Я уже пробовал это.Сообщение PHPXMLRPC в Drupal с metaWeblog.newPost: неправильное количество параметров метода

У меня это до сих пор:

require_once('xmlrpc-v1.174.inc'); 

$appkey  = "0001000"; 
$blogid  = "blog"; 

$username = "xxxx"; 
$password = "xxxx"; 
$text  = "testing"; 
$boolean = "true"; 

$content['title'] = "Testen van metaWeblog.newPost"; 
$content['description'] = $text; 

$oMessage = new xmlrpcmsg('metaWeblog.newPost'); 

$oMessage->addParam(new xmlrpcval($blogid , 'string')); 
$oMessage->addParam(new xmlrpcval($username , 'string')); 
$oMessage->addParam(new xmlrpcval($password , 'string')); 
$oMessage->addParam($content , 'struct'); 
$oMessage->addParam(new xmlrpcval($boolean , 'boolean')); 

$oClient = new xmlrpc_client("http://example.nl/drupal/xmlrpc.php"); 

$oClient->setDebug(0); 

$oResponse = $oClient->send($oMessage); 

if ($oResponse->faultCode()) { 
    $xWebserviceOutput = $oResponse->faultString(); 
} 
else 
{ 
    $oValue = $oResponse->value(); 
    $xWebserviceOutput = $oValue->scalarval(); 
} 

echo $xWebserviceOutput; 

Я использовал эту документацию:

http://www.sixapart.com/developers/xmlrpc/metaweblog_api/metaweblognewpost.html http://expressionengine.com/wiki/How_to_add_an_entry_using_PHP_and_Metaweblog_API/ http://api.drupal.org/api/function/blogapi_metaweblog_new_post/6

Ошибка он генерирует следующий:

Server error. Wrong number of method parameters. 

Кто-нибудь знает, что я делаю неправильно?

+0

В какой библиотеке нет XMLRPC-v1.174.inc принадлежат? Сценарий нечетной версии для http://phpxmlrpc.sourceforge.net. Также какую версию drupal вы используете? – VolkerK

+0

Можно ли добавить точное тело, которое вы отправляете на вопрос? Это должно помочь отлаживать. – Evert

+0

@VolkerK xmlrpc-v1.174.inc - это последняя версия phpxmlrpc. Это номер версии, которую они используют в самой lib. Я использую v6 из Drupal. @Evert Что значит Evert? Код, который я опубликовал, должен быть всем, что нужно, чтобы опубликовать что-то на Drupal. – h3rj4n

ответ

1

Решение:

require_once('xmlrpc-v1.174.inc'); 

$client = new xmlrpc_client("http://example.nl/drupal/xmlrpc.php"); 
$f = new xmlrpcmsg("metaWeblog.newPost", 
    array(
     new xmlrpcval("blog", "string"), // BlogID (Ignored) 
     new xmlrpcval("xxxx", "string"), // User 
     new xmlrpcval("xxxx", "string"), // Pass 
     new xmlrpcval(// body 
     array(
      "title" => new xmlrpcval("Testen van metaWeblog", "string"), 

     ), "struct"), 
     new xmlrpcval(true, "boolean") // publish 
    ) 
); 

$oResponse = $client->send($f); 


for ($i = 0; $i < $f->getNumParams(); $i++) { 
    $e = $f->getParam($i); 
    echo $e->scalarval(); 
} 

$xWebserviceOutput; 

if ($oResponse->faultCode()) { 
    $xWebserviceOutput = $oResponse->faultString(); 
} 
else 
{ 
    $oValue = $oResponse->value(); 
    $xWebserviceOutput = $oValue->scalarval(); 
} 

echo $xWebserviceOutput;