2010-03-16 1 views
2

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

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

<?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, поэтому я в недоумении. examples с сайта php показывает, как использовать массив в качестве параметра, но больше ничего.

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

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

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


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

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

ответ

1

Хорошо, я наконец понял, мой ответ ... Казалось, что проблема в заголовке, так как он работал, когда я изменил код Curl, чтобы соответствовать код, который я нашел его на this site. Сообщение о том, как удаленно отправлять сообщения в 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; 

?>