Ошибка PHP XML при анализе полезной нагрузки SOAP в строке 3: зарезервированное имя XML

Я новичок в веб-сервисах и мыле, я следовал руководству и пришел с этим кодом:

SOAP-сервер:

<?php
include("lib/nusoap.php");
include("getDB.php");

function getUsers()
{
    $user_id = $_GET['user_id'];
    $result = mysql_query("SELECT * FROM -table name- WHERE user_id = '$user_id'");
    $try    = mysql_fetch_array($result);
    return join(",", array(
        $result['username'], $result['password']
    ));
}

$server = new soap_server();
$server->register("getUsers");
$server->service($HTTP_RAW_POST_DATA);
?>

SOAP-клиент:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title></title>

      <!-- Error Reporting -->
      <?php 
         error_reporting(E_ALL);
         ini_set('display_errors', '1'); 
      ?>
   </head>
   <body>
        <?php
            include("lib/nusoap.php");
            $client = new nusoap_client("http://localhost/wp-content/themes/blackbird/phpwizard/HTML5Application/public_html/Webservice.php?user_id=4");

            $error = $client->getError();

            if ($error) 
            {
                echo "<h2>Constructor error</h2><pre>" . $error . "</pre>";
            }

            $result = $client->call("getUsers", array("category" => "books"));   

            if ($client->fault) 
            {
                echo "<h2>Fault</h2><pre>";
                print_r($result);
                echo "</pre>";
            }

            else 
            {
                $error = $client->getError();

                if ($error) 
                {
                    echo "<h2>Error</h2><pre>" . $error . "</pre>";
                }

                else 
                {
                    echo "<h2>Books</h2><pre>";
                    echo $result;
                    echo "</pre>";
                }
            }

        ?>
    </body>
</html>

Теперь при загрузке клиента SOAP я получаю сообщение об ошибке:

Ошибка XML при синтаксическом анализе полезной нагрузки SOAP в строке 3: зарезервированное имя XML

Я понятия не имею, почему это происходит.


person notknown7777    schedule 08.05.2013    source источник
comment
Какому учебнику вы следовали? Что вы сделали, чтобы лучше понять сообщение об ошибке? Что вы ожидали кроме сообщения об ошибке? Чем ваш вопрос отличается от ошибки XML при анализе полезной нагрузки SOAP: зарезервированное имя XML?   -  person hakre    schedule 21.05.2013


Ответы (1)


Попробуйте удалить пробел перед <?xml, как указано в этом вопросе
Ошибка XML при синтаксическом анализе полезной нагрузки SOAP: зарезервированное имя XML

Также можно вставить дамп клиента NuSOAP, как в этом вопросе, чтобы мы могли видеть, что отображается. Давайте начнем отладку и ответим тем, что вы видите на своем примере.

Кроме того, вот учебник, который я использовал в прошлом. Php сам по себе хорошо работает с SOAP, поэтому попробуйте его, прежде чем добавлять слой отдельной библиотеки, если вам не нужно от него что-то необычное. Попробуйте этот пример, чтобы увидеть, работает ли он для вас.
Пример IBM Opensource Php SoapServerClient.

person pal4life    schedule 13.05.2013
comment
Все это больше похоже на комментарий, чем на ответ. - person hakre; 21.05.2013
comment
Попробуйте удалить пробел перед <?xml, как указано в этом вопросе. Вот ответ прямо там - person pal4life; 21.05.2013
comment
Вам не нужно дублировать существующий ответ, если это ваш ответ. Просто оставьте ссылку в комментарии и посмотрите, есть ли уже решение. Если это так, вопрос в любом случае является дубликатом. - person hakre; 21.05.2013