问题描述
我正在使用 xampp,如果有帮助的话。
该代码应该从 client.PHP 向 server.PHP 发送查询,以获取数据库中的模块名称,并返回相应的模块代码和讲师名称。单独发送查询和数据库查询工作正常,但是当响应到达 client.PHP 时,返回的数组为空。请问有人可以帮忙吗?
server.PHP
<?PHP
// Pull in the NuSOAP code
require_once('nusoap.PHP');
require_once('db_connect.PHP');
$con = new MysqLi("localhost","root","","experience");
// Check connection
if ($con -> connect_errno) {
echo "Failed to connect to MysqL: " . $con -> connect_error;
exit();
}
// Create the server instance
$server = new soap_server();
// Initialize WSDL support
$NAMESPACE = 'http://www.uom.ac.mu/experience';
$server->debug_flag=false;
$server->configureWSDL('Module',$NAMESPACE);
$server->wsdl->schemaTargetNamespace = $NAMESPACE;
// ==== METHOD IMPLEMENTATION ===============================================
// ---- getExperience(module) ------------------------------------------------------
function getExperience($value) {
$searchCriteria = $value['input'];
$sql = "SELECT CONCAT( L.Name,' ',L.Surname ) AS Lecturer,CONCAT( M.ModuleCode,'-',M.ModuleName )
AS Module,L.Experience AS Experience FROM lecturers L,modules M WHERE L.ModuleCode = M.ModuleCode
AND M.ModuleName LIKE '%".$searchCriteria."%' ORDER BY L.Experience DESC;";
//$result = MysqL_query($sql);
$result = MysqLi_query($con,$sql);
$experience = array();
$experienceArray = array();
if (MysqLi_num_rows($result) > 0) {
//if(MysqL_num_rows($result) > 0){
//while ($row = MysqL_fetch_assoc($result)) {
while($row = MysqLi_fetch_assoc($result)) {
$experience = array('lecturer'=>$row['Lecturer'],'module' => $row['Module'],'experience' => $row['Experience']);
$experienceArray[] += $experience;
}
//MysqL_free_result($result);
}
else{
$module = array('lecturer'=>'NO DATA','module' => 'NO DATA','experience' => 'NO DATA');
}
return $experienceArray;
//MysqL_close($con);
MysqLi_close($con);
}
// ==== WSDL TYPES DECLaraTION ==============================================
// ---- LecturerExperience ----------------------------------------------------------------
$server->wsdl->addComplexType(
'LecturerExperience','complexType','struct','sequence','',array(
'lecturer' => array('name'=>'lecturer','type'=>'xsd:string'),'module' => array('name'=>'module','experience' => array('name'=>'experience','type'=>'xsd:int')
)
);
// ---- LecturerExperienceArray[] --------------------------------------------------------------
$server->wsdl->addComplexType(
'LecturerExperienceArray','array','SOAP-ENC:Array',array(),array(
array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:LecturerExperience[]')
),'tns:LecturerExperience'
);
// ==== WSDL FUNCTIONS REGISTRATION ===========================================
$server->register('getExperience',// method name
array('input' => 'xsd:string'),// input parameters
array('output' => 'tns:LecturerExperienceArray'),// output parameters
$NAMESPACE); //namespace
// ==== PROCESS REQUEST =====================================================
@$server->service(file_get_contents("PHP://input"));
exit();
?>
client.PHP
<?PHP
error_reporting(E_ALL);
require_once('nusoap.PHP');
//Get input parameter
if(isset($_GET["txt_module"]))
$module = $_GET["txt_module"];
//Create a soap client
$url = "https://localhost/xampp/Sem2/Week3/server.PHP?wsdl";
$client = new nusoap_client($url);
$err = $client->getError();
if ($err) {
echo '<p><b>Error: ' . $err . '</b></p>';
}
$args = array('input' => $module);
print_r($args);
$response = $client->call('getExperience',array($args));
//display SOAP Request/Response
echo '<h2>Request</h2>';
echo '<pre>' . htmlspecialchars($client->request,ENT_QUOTES) . '</pre>';
echo '<h2>Response</h2>';
echo '<pre>' . htmlspecialchars($client->response,ENT_QUOTES) . '</pre>';
//Reading returned Object and creating XML
$XMLDocument = new SimpleXMLElement('<?xml version="1.0" ?><Experiences></Experiences>');
foreach($response as $record){
$experience = $XMLDocument->addChild('LecturerExperience');
$experience->addChild('Lecturer',$record[lecturer]);
$experience->addChild('Module',$record[module]);
$experience->addChild('Experience',$record[experience]);
}
// Apply XSLT to display the SOAP Response
$XSLDocument = new DOMDocument();
$XSLDocument->load("module.xsl");
$XSLProcessor = new XSLTProcessor();//PHP5
$XSLProcessor->importStylesheet($XSLDocument);
echo $XSLProcessor->transformToXML($XMLDocument);
?>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)