mi consulta es que tengo un xml y necesito enviarlo como parametro, uso la clase nusoap, este se conecta bien y todo ok, pero manda un error al hacer el request, error de parsing, si ese xml lo tiro directo desde un programa(soapui), funciona bien.
¿que puede ser?
sobre.xml
Código PHP:
<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:val="http://valida.aem.gob.cl" xmlns:xd="http://www.w3.org/2000/09/xmldsig#">
<soapenv:Header/>
<soapenv:Body>
<val:sobre>
<val:encabezado>
<val:idSobre>130601000120100419000000100</val:idSobre>
<val:fechaHora>2010-04-19</val:fechaHora>
<val:proveedor>
<val:nombre>CONADI</val:nombre>
<val:servicios>
<val:servicio>CERTIFICADO CALIDAD INDIGENA</val:servicio>
<val:respuestaServicio>
<val:estado>SI</val:estado>
<val:glosa>RESPUESTA EXITOSA</val:glosa>
</val:respuestaServicio>
</val:servicios>
</val:proveedor>
<val:consumidor>
<val:nombre>CNR</val:nombre>
<val:tramite>POSTULACION A LA LEY N 18.450 DE FOMENTO A LA INVERSION PRIVADA EN RIEGO Y DRENAJE</val:tramite>
<val:certificado>
<xd:X509Data>
<xd:X509IssuerSerial>
<xd:X509IssuerName>IN</xd:X509IssuerName>
<xd:X509SerialNumber>0</xd:X509SerialNumber>
</xd:X509IssuerSerial>
</xd:X509Data>
</val:certificado>
</val:consumidor>
<val:fechaHoraReq>2010-04-19</val:fechaHoraReq>
<val:emisor>CONADI</val:emisor>
<val:metadataOperacional>
<val:estadoSobre>00</val:estadoSobre>
<val:glosaSobre>TRANSACCION EXITOSA</val:glosaSobre>
</val:metadataOperacional>
</val:encabezado>
<val:cuerpo>
<val:documento>
<aem:entradaCalidadIndigena xsi:schemaLocation="http://valida.aem.gob.cl/documentales/CONADI/entradaCalidadindigena.xsd" xmlns:aem="http://valida.aem.gob.cl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><aem:run><aem:numero>15854566</aem:numero><aem:dv>7</aem:dv></aem:run></aem:entradaCalidadIndigena>
</val:documento>
</val:cuerpo>
<xd:Signature/>
</val:sobre>
</soapenv:Body>
</soapenv:Envelope>
Código PHP:
...
include("nusoap/lib/nusoap.php");
$xml = file_get_contents("sobre.xml");
$soap = new nusoap_client("https://test.pisee.cl/CONADICertificadoCalidadIndigenaProxy?wsdl", true);
$soap->setCredentials("****", "*****");
//Verifico que no haya ningún error al conectar el web service
if($sError = $soap->getError()){
die("no se puede realizar la operacion [".$sError."]");
}
//llamo al metodo y paso parametro
$respuesta = $soap->call("getConadiObtenerCertificadoCalidadIndigena", htmlspecialchars($xml, ENT_QUOTES));
//O $respuesta = $soap->call("getConadiObtenerCertificadoCalidadIndigena",$xml);
//verifico que la accion se lleve a cabo correctamente, de lo contrario error
if($soap->fault){
echo "no se puede completar la operacion <br />";
echo '<pre>';
print_r($respuesta);
echo '</pre>';
print_r("<pre>".htmlspecialchars($soap->request, ENT_QUOTES)."</pre>");
print_r("<pre>".htmlspecialchars($soap->response, ENT_QUOTES)."</pre>");
//echo '<pre>';
//print_r($xml);
//echo '</pre>';
exit;
}else{
//otra verficación
if($eError = $soap->getError()){
die("Error: ".$eError);
}
$err = $soap->getError();
if($err){
echo '<h2>Error</h2><pre>' .$err. '</pre>';
}else{
echo '<h2>Resultado</h2><pre>';
print_r($respuesta);
}
}
...
no se puede completar la operacion
Array
(
[faultcode] => soapenv:Server
[faultstring] => BEA-382510: ALSB Assign action failed updating variable "logMessage": com.bea.wli.common.xquery.XQueryException: Error parsing XML: {err}XP0006: "element {http://schemas.xmlsoap.org/soap/envelope/}Envelope { {http://www.w3.org/2004/07/xpath-datatypes}untypedAny }": bad value for type element {http://valida.aem.gob.cl}sobre { {http://www.w3.org/2001/XMLSchema}anyType }
[detail] => Array
(
[fault] => Array
(
[errorCode] => BEA-382510
[reason] => ALSB Assign action failed updating variable "logMessage": com.bea.wli.common.xquery.XQueryException: Error parsing XML: {err}XP0006: "element {http://schemas.xmlsoap.org/soap/envelope/}Envelope { {http://www.w3.org/2004/07/xpath-datatypes}untypedAny }": bad value for type element {http://valida.aem.gob.cl}sobre { {http://www.w3.org/2001/XMLSchema}anyType }
[location] => Array
(
[node] => PiseeCommonMessageProcessingProxy2_PipelinePairNod e1
[pipeline] => PiseeCommonMessageProcessingProxy2_PipelinePairNod e1_response
[stage] => call auditservice2
[path] => response-pipeline
)
)
)
)