I created a web service based on PHP / MySQL. I wrote client.php as mentioned here
and server.php as shown below:
<?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); ?>
From the code above in the getDemoData function, if I delete the while loop, it gives the correct output. But when I return the while loop, it shows me the output as "-Error: Response not of type text / xml: text / html", even if the SQL query is correct. I copied and entered the generated SQL query that works in phpMyAdmin.
source share