Foros del Web » Programando para Internet » PHP »

PHP SOAP con NuSOAP

Estas en el tema de PHP SOAP con NuSOAP en el foro de PHP en Foros del Web. 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... ...
  #1 (permalink)  
Antiguo 28/11/2010, 16:43
Avatar de illman  
Fecha de Ingreso: mayo-2001
Mensajes: 115
Antigüedad: 22 años, 11 meses
Puntos: 0
PHP SOAP con NuSOAP

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->requestENT_QUOTES) . '</pre>';
echo 
'<h2>Response</h2><pre>' htmlspecialchars($client->responseENT_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

Etiquetas: nusoap, soap, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:19.