Ciao
ormai è circa 1 settimana che sto cercando di approfondire i ws in php e nn riesco a capire come mai quando cerco di passare un array proprio nn ne vuole sapere.
Il server è : http://phpxmlrpc.sourceforge.net/server.php
Di seguito il codice:
codice:
//chiamata a un metodo che vuole un int. questo funziona
$par2 = new xmlrpcval(23, "int");
$msg1 = new xmlrpcmsg("examples.getStateName", array($par2));
$con = new xmlrpc_client("/server.php", "phpxmlrpc.sourceforge.net", 80);
$risposta = $con->send($msg1);
echo "dopo send
";
echo $risposta->faultCode()."
";
if(!$risposta->faultCode()){
$v2 = $risposta->value();
$result = $v2->scalarval(); // non funzionerebbe con array!
print "Città: " . htmlspecialchars($result);
}
else{
print "An error occurred:\n";
print " Code: " . htmlspecialchars($risposta->faultCode())."\n";
print " Reason: " . htmlspecialchars($risposta->faultString());
}
Di seguito il codice che non funziona:
codice:
$obj = new xmlrpcval(array("aaa"=>new xmlrpcval(35, "int"),"bbb"=>new xmlrpcval(21,"int"),"ccc"=>new xmlrpcval(23, "int"), "ddd" =>new xmlrpcval(45,"int")),"a");
$messaggioObj = new xmlrpcmsg('examples.sortByAge', array($obj));
$clientObj = new xmlrpc_client("/server.php", "phpxmlrpc.sourceforge.net", 80);
$rispostaObj = $clientObj->send($messaggioObj);
if(!$rispostaObj->faultCode()){
$v2 = $rispostaObj->value();
$result = $v2->scalarval(); // non funzionerebbe con array!
print "Città: " . htmlspecialchars($result);
}
else{
print "An error occurred:\n";
print " Code: " . htmlspecialchars($rispostaObj->faultCode())."\n";
print " Reason: " . htmlspecialchars($rispostaObj->faultString());
}
Ho provato anche in questo modo:
codice:
$elementi = array("aaa"=>45,"bbb"=>23,"ccc"=>32,"ddd"=>24);
$parEncode = php_xmlrpc_encode($elementi);
echo "
";
print_r($parEncode);
echo "
";
$msgEncode = new xmlrpcmsg("examples.sortByAge", array($parEncode));
$clientObj = new xmlrpc_client("/server.php", "phpxmlrpc.sourceforge.net", 80);
$rispostaObjEncode = $clientObj->send($msgEncode);
echo "
mandato msgEncode
";
echo $rispostaObjEncode->faultCode() . "
";