Передача параметра в заголовке (XML RPC)

Я пытаюсь настроить статус сервера для MMORPG Champions Online. Я получил некоторую основную информацию от веб-мастера, и это все, что он мне сказал:

Теперь я нашел хороший пример, чтобы начать с здесь, и я закончил с этим код:

<?php
 ini_set('display_errors', 1);
 error_reporting(E_ALL);

# Using the XML-RPC extension to format the XML package
$request = xmlrpc_encode_request("wgsLauncher.getServerStatus", "<param><value><string>en-US</string></value></param>", null );

# Using the cURL extension to send it off, 
# first creating a custom header block
$header[] = "Host: http://www.champions-online.com:80/";
$header[] = "Content-type: text/xml";
$header[] = "Content-length: ".strlen($request) . "\r\n";
$header[] = $request;

$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, "http://www.champions-online.com/xmlrpc.php"); # URL to post to
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); # return into a variable
curl_setopt( $ch, CURLOPT_HTTPHEADER, $header ); # custom headers, see above
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'POST' ); # This POST is special, and uses its specified Content-type
$result = curl_exec( $ch ); # run!
curl_close($ch); 

echo $result;
?>

Но я получаю сообщение об ошибке "400 Bad Request". Я новичок в XML RPC и почти не знаю php, поэтому я в недоумении. примеры с сайта php показывают, как использовать массив в качестве параметра, но не более того.

Я получил строку параметров <param><value><string>en-US</string></value></param> из этого XMLRPC Debugger (кстати, очень приятно). Я ввел нужный мне параметр в поле «полезная нагрузка», и это был вывод.

Итак, я был бы признателен за любую помощь в том, как передать этот параметр в заголовок.

Примечание. Мой хост поддерживает xmlrpc, но кажется, что функция "xmlrpc_client" не существует.


Обновление: веб-мастер ответил с этой информацией, но она все еще не работает... доходит до того, что я могу просто удалить статус со страницы.

$request = xmlrpc_encode_request("wgsLauncher.getServerStatus", "en-US" );

person Mottie    schedule 16.03.2010    source источник


Ответы (1)


Хорошо, я наконец-то понял свой ответ... Казалось, проблема в заголовке, потому что это сработало, когда я изменил код cURL, чтобы он соответствовал коду, который я нашел на этого сайта. Пост о том, как удаленно публиковать в wordpress с помощью XMLRPC в php.

Это код, с которым я закончил:

<?php

// ini_set('display_errors', 1);
// error_reporting(E_ALL);

# Using the XML-RPC extension to format the XML package
$request = xmlrpc_encode_request( "wgsLauncher.getServerStatus", "en-US" );

$ch = curl_init();
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_URL, "http://www.champions-online.com/xmlrpc.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
$result = curl_exec($ch);
curl_close($ch);

$method = null;
$params = xmlrpc_decode_request($result, &$method); 

# server status result = true (up) or false (down)
$status = ($params['status']) ? 'up' : 'down';
$notice = ($params['notice'] == "") ? "" : "Notice: " + $params['notice'];
echo "Server Status: " . $status . "<br>";
echo $notice;

?>
person Mottie    schedule 20.03.2010