Hola,
A ver si alguien me puede ayudar.
Tengo que conectar con un webservice de un cliente que me indicará si los productos tienen stock...
El formato de la llamada es el siguiente:
Código PHP:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ConsultaInformacionProductos xmlns="URLCONECTOR">
<Peticion>
<Producto>
<CodigoProveedor>string</CodigoProveedor>
<CodigoProducto>string</CodigoProducto>
<UnidadesSolicitadas>int</UnidadesSolicitadas>
<PVPSolicitado>double</PVPSolicitado>
</Producto>
<Producto>
<CodigoProveedor>string</CodigoProveedor>
<CodigoProducto>string</CodigoProducto>
<UnidadesSolicitadas>int</UnidadesSolicitadas>
<PVPSolicitado>double</PVPSolicitado>
</Producto>
</Peticion>
</ConsultaInformacionProductos>
</soap:Body>
</soap:Envelope>
Al hacer la llamada con NuSOAP envio esto
Código PHP:
<?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>
<ns7464:ConsultaInformacionProductos xmlns:ns7464="URLCONECTOR">
<Peticion>
<Producto>
<CodigoProveedor xsi:type="xsd:string">PROVEEDOR</CodigoProveedor>
<CodigoProducto xsi:type="xsd:string">CODPROD</CodigoProducto>
<UnidadesSolicitadas xsi:type="xsd:int">1</UnidadesSolicitadas>
<PVPSolicitado xsi:type="xsd:float">368.89</PVPSolicitado>
</Producto>
</Peticion>
</ns7464:ConsultaInformacionProductos>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
El código PHP que utilizo es el siguiente:
Código PHP:
$client = new nusoap_client($soaphost);
$err = $client->getError();
if ($err) {
echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->getDebug(), ENT_QUOTES) . '</pre>';
exit();
}
$client->setUseCurl($useCURL);
$client->soap_defencoding = 'UTF-8';
// This is an archaic parameter list
$params = array(
'Peticion' => array(
'Producto' =>
array(
'CodigoProveedor' => 'COPROV',
'CodigoProducto' => 'CODPROD',
'UnidadesSolicitadas' =>1,
'PVPSolicitado' => 368.89
),
)
);
$result = $client->call('ConsultaInformacionProductos', $params, $soapnamespace, $soapaction);
if ($client->fault) {
echo '<h2>Fault (Expect - The request contains an invalid SOAP body)</h2><pre>'; print_r($result); echo '</pre>';
} else {
$err = $client->getError();
if ($err) {
echo '<h2>Error</h2><pre>' . $err . '</pre>';
} else {
echo '<h2>Result</h2><pre>'; print_r($result); echo '</pre>';
}
}
echo '<h2>Request</h2><pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
echo '<h2>Response</h2><pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';
echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->getDebug(), ENT_QUOTES) . '</pre>';
La cuestión es que la petición siempre me devuelve un error de formato, la única diferencia que veo entre la solicitud standard y la que envio es
Código PHP:
<ConsultaInformacionProductos xmlns="URLCONECTOR">
// Que se convierte en al pasarlo por NuSOAP en
<ns7464:ConsultaInformacionProductos xmlns:ns7464="URLCONECTOR">
¿Alguna idea?
Y otra consulta como puedo modificar este array para contener más de un producto en la misma consulta?
Código PHP:
$params = array(
'Peticion' => array(
'Producto' =>
array(
'CodigoProveedor' => 'COPROV',
'CodigoProducto' => 'CODPROD',
'UnidadesSolicitadas' =>1,
'PVPSolicitado' => 368.89
),
)
);
gracias de antemano