2010-05-24 34 views
11

me dieron esto desde una petición de cliente Jabón:no es un valor válido AllXsd

excepción: excepción SoapFault: [jabón: Cliente] servidor no pudo solicitud de lectura. ---> Hay un error en el documento XML (2, 273). ---> La cadena '2010-5-24' no es un valor AllXsd válido. en /path/filinet.php:21 Stack trace: # 0 [función interna]: SoapClient -> __ call ('SubIdDetailsByO ...', Matriz) # 1 /path/filinet.php(21): SoapClient -> SubIdDetailsByOfferId (array) # 2 {main}

parece que estoy enviando un valor incorrecto, ¿cómo formatear mi valor en un AllXsd en php?

Aquí está mi código:

<?php  
$start = isset($_GET['start']) ? $_GET['start'] : date("Y-m-d"); 
$end = isset($_GET['end']) ? $_GET['end'] : date("Y-m-d"); 

//define parameter array 
$param = array('userName'=>'user', 'password'=>'pass', 'startDate' => $start, 'endDate' => $end, 'promotionId' => ''); 

//Get wsdl path 
$serverPath = "https://webservices.filinet.com/affiliate/reports.asmx?WSDL"; 

//Declare Soap client 
$client = new SoapClient($serverPath); 
try { 
     //make the call 
     $result = $client->SubIdDetailsByOfferId($param); 
     //If error found display error 
     if(isset($fault)) 
     { 
      echo "Error: ". $fault; 
     } 
     //If no error display response 
     else 
     { 
      //Used to display raw XML in the Web Browser 
      header("Content-Type: text/xml;"); 
      //SubIdDetailsResult = XML results 
      echo $result->SubIdDetailsByOfferIdResult; 
     } 
    } 
    catch(SoapFault $ex) { 
     echo "<b>Exception:</b> ". $ex; 
    } 
unset($client); 
?> 

Respuesta

25

valores AllXsd ven algo como esto IIRC

2010-05-24T18: 13: 00

0

El problema es con la fecha formato de $ start o $ end. En lugar de sólo sacar los datos de la cadena de consulta con $ _GET y enviarlos a través de, es necesario hacer un poco de comprobación de integridad para asegurarse de que la fecha coincide con el formato requerido

2010-05-24T13:46:00 

En lugar de utilizar la fecha ("Ymd") Trate de utilizar:

$startDate = date("Y-m-d") . 'T' . date("H:i:s"); 
+0

Lo sentimos, no funcionó. –

1
// set the default timezone to use. Available since PHP 5.1 
date_default_timezone_set('UTC'); 
// get the date 
$startDate = date("Y-m-d") . 'T' . date("H:i:s"); 
1

al grano y utilizar

date('c'); 
Cuestiones relacionadas