Ciao,
sto cercando di sviluppare un server soap e per farlo mi affido per la generazione del wsdl alla libreria nusoap di php. Non ho mai lavorato con un server soap, ma sempre con il client e quindi mi mancano dei concetti che vorrei capire...mi spiego con u esempio:
Vorrei ricevere un xml di questo genere e rispondere di conseguenza
1° problema:con Nusoap specifico con i tipi complessi gli elementi, ma come posso definire ad esempio i figli di un elemento? (entry ha 2 figli Action e Item)<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<document>
<ReselledBy>10001</ReselledBy>
<Package>1001</Package>
<ItneServiceName name="MYSERVICE">
<entrys>
<entry>
<Action>Add</Action>
<Item>Oggetto1</Item>
</entry>
<entry>
<Action>Del</Action>
<Item>Oggetto2</Item>
</entry>
</entrys>
</ItneServiceName>
</document>
Detto questo, ho generato il server soap con il relativo wsdl (chiaramente con un elemento unico ReselledBy). Poi, ho definito la funzione che ho messo a disposizione e qui mi chiedo...se definisco l'elemento "ReselledBy", ma poi la funzione si aspetta il parametro "PIPPO", perchè devo definire gli elementi??![]()
vi mostro il server creato
Codice PHP:require_once("lib/nusoap.php");
define("NAMESPACE", "http://localhost/nusoap");
$SoapServer = new soap_server;
$SoapServer->debug_flag=true;
$SoapServer->configureWSDL("ManageSelf", NAMESPACE);
$SoapServer->wsdl->schemaTargetNamespace = NAMESPACE;
$SoapServer->wsdl->addComplexType(
"utente",
"complexType",
"struct",
"all",
"",
array("ItnServiceReselledBy"=>array("name"=>"ReselledBy","type"=>"xsd:string")),
"");
$SoapServer->register(
"GetPost",
array('ResId'=>'xsd:int','PckId'=>'xsd:int'),
array('return'=>'tns:risposta'),
NAMESPACE);
function GetPost($Resid,$PckId)
{
$value=$Resid."::".$PckId;
return $value;
}
$HTTP_RAW_POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';
$SoapServer->service($HTTP_RAW_POST_DATA);
exit();

Rispondi quotando