problemi con nusoap

Ciao a tutti,

 sto cercando di creare i miei primi "web services" in php e per far ciò sto utilizzando la libreria nusoap. innanzi tutto non riesco a capire se la scelta delle librerie nusoap è la migliore, o è megliio utilizzarne altre.(soprattutto in fatto di interoperabilità)

Secondo ho un problema nel creare un client al web services che ho scritto, in cui si invia una stringa e si riceve un dato complesso. mi sembra di aver scritto correttamente il codice, solo che non riesco a ricevere l'array di ritorno.Vi riporto i listati:

Server:

<?php
//$namespace = "http://localhost/nusoaptest/wsdl";
require_once('nusoap.php');

$s= new soap_server();
$s->debug_flag = false;
$s->configureWSDL("Rosamunda", 'urn:rosamunda');
//$s->wsdl->schemaTargetNamespace = $namespace;

$s->wsdl->addComplexType(
  'Info_studente',
  'complexType',
  'struct',
  'all',
  '',
  array(
    'Matricola' => array('name' => 'Matricola', 'type' => 'xsd:string'),
    'Stato' => array('name' => 'Stato', 'type' => 'xsd:string'),
    'Dt_Iscrizione' => array('name' => 'Dt_Iscrizione', 'type' => 'xsd:string'),
    'AC' => array('name' => 'AC', 'type' => 'xsd:int')
  )
);

$s->register('St_Carriera',                  // method name
  array('name' => 'xsd:string'),           // input parameters
  array('return' => 'tns:Info_Studente'),   // output parameters
  'urn:rosamunda',                            // namespace
  'urn:rosamunda#St_Carriera',               // soapaction
  'rpc',                                   // style
  'encoded',                               // use
  'Rosamunda , tu sei la vita per me'                   // documentation
);

function St_Carriera($matricola){   
//   $nrighe=oci_fetch_all($car_stm,$Ris,0,-1,OCI_FETCHSTATEMENT_BY_ROW);
   $Ris=array();
   $Ris[MATRICOLA]=$matricola;
   $Ris[STATO]='AT';
   $Ris[DT_ISCRIZIONE]="11-04-08";
   $Ris[ANNO_CORSO]=1;
   if (!isset($Ris)){
      $st_carr=array('Matricola'=>'errore',
                  'Stato'=>'errore',
                  'Dt_Iscrizione'=>null,
                  'AC'=>0);
      return  $st_carr;
   } else {
      return array('Matricola'=> $Ris[MATRICOLA],
                  'Stato'=>$Ris[STATO],
                  'Dt_Iscrizione'=>$Ris[DT_ISCRIZIONE],
                  'AC'=>$Ris[ANNO_CORSO]);
      return  $st_carr;
   }
}


//implementare il controllo matricola

$HTTP_RAW_POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA'])
  ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';
$s->service($HTTP_RAW_POST_DATA);
exit;
?>

il client:

<?php

require("nusoap.php");

$matricola=$_POST[Matricola];   //(string)

if (is_null($matricola)){
   echo "matricola vuota<br />";
} else {
   $par = array('Matricola'=>$matricola);//;   
   $soapclient = new soapclient('http://localhost/nusoaptest/car_stu_srv.php?wsdl');
   $err = $soapclient->getError();
   if ($err){
      echo $err . "<br />";
      exit;
   }
   
   $ris=  $soapclient->call('St_Carriera',array('Matricola'=>$matricola));
   $err = $soapclient->getError();
   if ($err){
      echo $err . "<br />";
      exit;
   }
   
   
   echo "Il dato per la matricola <font color=orange>$matricola</font> richiesto per l'utente <font color=orange>aio</font> ha prodotto il seguente risultato:<br>";
   var_dump($ris);

}
echo '<h2>Request</h2>';
echo '<pre>' . htmlspecialchars($soapclient->request, ENT_QUOTES) . '</pre>';
echo '<h2>Response</h2>';
echo '<pre>' . htmlspecialchars($soapclient->response, ENT_QUOTES) . '</pre>';

echo '<h2>Debug</h2>';
echo '<pre>' . htmlspecialchars($soapclient->debug_str, ENT_QUOTES) . '</pre>';

unset($soapclient);
echo "</b></font></body></html>";
?>

mi sfugge il motivo...qualcuno può aiutarmi?

Andre

inviato 8 anni fa
cybaSsh
X 0 X

l'errore sarebbe che quando eseguo

$ris=  $soapclient->call('St_Carriera',array('Matricola'=>$matricola));
print_r($ris);

mi da l'output

string(0) ""
risposto 8 anni fa
cybaSsh
X 0 X

caso di svista.

come paramwetro del attore, dovevo passare la stringa come array.

ciao.

risposto 8 anni fa
cybaSsh
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili