Ошибка возникает при Loop PHP / MySQL NuSOAP

Я создал веб-сервис на основе PHP / MySQL. Я написал client.php как упомянуто здесь

и server.php, как показано ниже:

    <?php
require_once("lib/nusoap.php");
$host = $_SERVER['HTTP_HOST'];
$miURL = 'http://'.$host.'/WS-Demo';


 $server = new nusoap_server();
    $server->configureWSDL('L3M_WebService', $miURL);
    $server->wsdl->schemaTargetNamespace=$miURL;

    $server->register('getDemoData',
   array('fldpara' => 'xsd:Array', 'tblpara' => 'xsd:Array', 'cndpara' => 'xsd:Array'),
                      array('return' => 'xsd:string'),
                      $miURL);


    function decryptRJ256($string_to_decrypt)
    {
    $key    = 'salt_key - I';
    $iv     = 'salt_key - II';
    $string_to_decrypt = base64_decode($string_to_decrypt); 
    $rtn = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $string_to_decrypt, MCRYPT_MODE_CBC, $iv);
    $rtn = rtrim($rtn, "\4");
    return($rtn);
}

function encryptRJ256($string_to_encrypt)
{
    $key    = 'salt_key - I';
    $iv     = 'salt_key - II';
    $rtn = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $string_to_encrypt, MCRYPT_MODE_CBC, $iv);
    $rtn = base64_encode($rtn);
    return($rtn);
}

function getDemoData($flds, $tbls, $cnds){
    $mysqli = new mysqli("localhost", "root", "", "test");
    for($i=0;$i< count($flds); $i++) {
        $flds[$i] = decryptRJ256($flds[$i]);
    }    
    for($i=0;$i< count($tbls); $i++) {
        $tbls[$i] = decryptRJ256($tbls[$i]);
    }
    for($i=0;$i< count($cnds); $i++) {
        $cnds[$i] = decryptRJ256($cnds[$i]);
    }

    if(! empty($flds)) {
        $what = implode(", ", $flds);
    } else {
        $what = "*";
    }

    if(! empty($tbls)) {
        $from = implode(", ", $tbls);
    }else {
        $err = 1;
    }

    if(! empty($cnds)) {
        $cond = " WHERE ";
        $cond .= $cnds[0] . " = '" . $cnds[1] . "'";
    } else {
        $cond = "";
    }

    $sql = "SELECT ".$what." FROM ".$from . $cond;
    $rsGetData = $mysqli->query($sql);
    $responseData = '<?xml version="1.0" encoding="UTF-8"?>
    <L3MDataSets>';
    while($rowGetData = $rsGetData->fetch_assoc()) {
        $responseData .= '<L3DataSet>';
        foreach($rowGetData as $k => $v) {
            $responseData .= '<' . $k . '>' . $v . '</' . $k . '>';
        }
        $responseData .= '</L3DataSet>';
    }
    $responseData .= '</L3MDataSets>';
    $responseData = encryptRJ256($responseData);
    $responseString = new soapval('return', 'xsd:string', $responseData );
    return $responseData;
}

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>

Из кода Above в функции getDemoData, если я удаляю цикл while, он выдает правильный вывод. Но когда я возвращаю цикл while, он показывает вывод в виде "-Error: Response не типа text/xml: text/html", даже если SQL-запрос правильный. Я скопировал и вставил сгенерированный запрос SQL, который работает в phpMyAdmin.

0 ответов

Другие вопросы по тегам