Нужна помощь с xmlrpc в php - PullRequest
       1

Нужна помощь с xmlrpc в php

1 голос
/ 23 июля 2010

Я скачал phpxmlrpc с http://phpxmlrpc.sourceforge.net/

У меня на веб-сервере есть папка с именем xmlrpc-test, и у меня создано простое тестовое приложение php.

<?php
include 'xmlrpc.inc';
include 'xmlrpcs.inc';

function sumAndDifference ($params) {

    // Parse our parameters.
    $xval = $params->getParam(0);
    $x = $xval->scalarval();
    $yval = $params->getParam(1);
    $y = $yval->scalarval();

    // Build our response.
    $struct = array('sum' => new xmlrpcval($x + $y, 'int'),
                    'difference' => new xmlrpcval($x - $y, 'int'));
    return new xmlrpcresp(new xmlrpcval($struct, 'struct'));
}

// Declare our signature and provide some documentation.
// (The PHP server supports remote introspection. Nifty!)
$sumAndDifference_sig = array(array('struct', 'int', 'int'));
$sumAndDifference_doc = 'Add and subtract two numbers';

new xmlrpc_server(array('sample.sumAndDifference' =>
                        array('function' => 'sumAndDifference',
                              'signature' => $sumAndDifference_sig,
                              'docstring' => $sumAndDifference_doc)));
?>

Я загрузилОтладчик phpxmlrpc ввел адрес :, порт: и путь: но когда я нажимаю кнопку выполнения для List available methods, ничего не происходит.

Вопрос 1 : почему мой локальный отладчик не работает?

Итак, я зашел сюда http://phpxmlrpc.sourceforge.net/jsxmlrpc/debugger/debugger.html, и, похоже, он работает лучше.

Однако, когда я нажимаю здесь кнопку «Выполнить» (после ввода данных моего сервера), я получаю следующеесообщение.

Код ошибки: [5] Причина: «Не получено 200 OK с удаленного сервера.(отправка не удалась) '

Я подумал, что это могло означать, что что-то не так с моим локальным сервером и глобальной сетью, поэтому я протестировал приложение на http://feedvalidator.org/, и я действительно получилответ.

   1. <?xml version="1.0"?>
   2. <methodResponse>
   3. <fault>
   4. <value>
   5. <struct><member><name>faultCode</name>
   6. <value><int>105</int></value>
   7. </member>
   8. <member>
   9. <name>faultString</name>
  10. <value><string>XML error: Invalid document end at line 1, column 1</string></value>
  11. </member>
  12. </struct>
  13. </value>
  14. </fault>
  15. </methodResponse>

Я думаю, что это ошибка, потому что не передается полезная нагрузка.

Вопрос 2: Как мне решить эту проблему?Как мне получить очень простой сервер xmlrpc, работающий с php?

1 Ответ

0 голосов
/ 20 ноября 2010

Для потомков я внесу свой вклад.

Во-первых, ваш локальный отладчик не работает из-за тихого саботажа в песочнице безопасности.W3C и производители браузеров разработали схему, согласно которой браузер будет молча переводить POST-запрос, который ваш отладчик отправляет вместо запроса OPTION.Это похоже на настоящий бред, потому что браузер не дает видимых указаний на то, что он делает это, но это стандартное поведение.Если вы зайдете в Firebug или консоль и посмотрите на сетевой трафик, вы увидите его из первых рук.

Во-вторых, этот пример похож на пример из книги «Мастер ...» о Joomla.Вполне возможно, что любой из многочисленных недостатков и настроек конфигурации в любом месте технологического стека может стать препятствием.Я только что столкнулся с той же проблемой сегодня.Настоящий урок, который нужно выучить здесь, это «не делай этого».Используйте среду разработки, которая имеет лучшую поддержку цепочки инструментов и более простой путь к успеху.

...