NUSOAP: unable to serialize result

Salve a tutti, sto cercando di implementare un web service con NUSOAP e sembra andare tutto a gonfie vele. Ho trovato una cosa molto strana. Quando controllo un errore nella parte server con il seguente comando invece di restituirmi l'errore con il codice mi dice: unable to serialize result. Perche?

Ecco la gestione dell'errore:

   if(isset($data['code'])){
      $code = $data['code'];
   }else{
      return Error(110, 'Code is a required field', 'Error');
   }
Array ( [faultcode] => Server [faultactor] => [faultstring] => unable to serialize result [detail] => )

[b]Request[/b]

POST /euroserver.php HTTP/1.0
Host: api.xxxxx.xx
User-Agent: NuSOAP/0.7.2 (1.94)
Content-Type: text/xml; charset=UTF-8
SOAPAction: "urn:xxxxx_data#xxxxx"
Content-Length: 643

<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns7462="urn:xxxxx_data" xmlns:tns="urn:xxxxx"><SOAP-ENV:Body><ns7462:SECURITY xmlns:ns7462="urn:xxxxx_data"><security xsi:type="tns:security_param"><code xsi:type="xsd:string"></code><license xsi:type="xsd:string">12345</license></security></ns7462:SECURITY></SOAP-ENV:Body></SOAP-ENV:Envelope>

[b]Response[/b]

HTTP/1.0 500 Internal Server Error
Date: Mon, 04 Jun 2007 07:08:03 GMT
Server: Apache
X-Powered-By: PHP/5.2.1
Status: 500 Internal Server Error
X-SOAP-Server: NuSOAP/0.7.2 (1.94)
Content-Length: 646
Connection: close
Content-Type: text/xml; charset=UTF-8

<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body><SOAP-ENV:Fault><faultcode xsi:type="xsd:string">Server</faultcode><faultactor xsi:type="xsd:string"></faultactor><faultstring xsi:type="xsd:string">unable to serialize result</faultstring><detail xsi:type="xsd:string"></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>

Grazie

 :bye:

inviato 9 anni fa
ulisse
X 0 X

ma quell'errore a che riga di codice si riferisce?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Sono riuscito a proseguire e l'errore č stato parzialmente risolto. Ora c'č un altro scalino da superare.

Nusoap ha un gestore di errori: soap_fault. Io ho realizzato una piccola funzione che restituisce l'xml che possiede l'errore:

/*
* create an error message
*
*/
function Error($code, $message, $faultactor="", $details="") {
   $error = new soap_fault($code, $faultactor, $message, $details);
   return $error->serialize();
}

il codice su mensionato restituisce questa porzione di xml:

<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body><SOAP-ENV:Fault><faultcode xsi:type="xsd:int">99</faultcode><faultactor xsi:type="xsd:string">PD</faultactor><faultstring xsi:type="xsd:string">This CODE is not present in our archive.</faultstring><detail xsi:type="xsd:string"></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>

ma l'header č di tipo text/html

HTTP/1.1 200 OK
Date: Mon, 04 Jun 2007 10:01:30 GMT
Server: Apache
X-Powered-By: PHP/5.2.1
Content-Length: 654
Connection: close
Content-Type: text/html

e il seguente codice ovviamente non riesce a parserizzare il contenuto della risposta:

if ($client->fault) {
         return $result;
      } else {
         $err = $client->getError();
         if ($err) {
            echo $err;
            die;
         } else {
            if(isset($result) && is_array($result)){
               return $result;
            }
         }
      }

e mi restituisce: Response not of type text/xml

grazie

 :bye:

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