Foros del Web » Programando para Internet » PHP »

consumir un web service .net con dataset tipados desde php

Estas en el tema de consumir un web service .net con dataset tipados desde php en el foro de PHP en Foros del Web. Muy buenas a todos. Tengo un gran problema intentando consumir un web service en .net con dataset tipados, desde mi aplicación php. Yo mando los ...
  #1 (permalink)  
Antiguo 28/01/2008, 13:06
 
Fecha de Ingreso: septiembre-2003
Ubicación: Madrid
Mensajes: 53
Antigüedad: 21 años, 2 meses
Puntos: 1
consumir un web service .net con dataset tipados desde php

Muy buenas a todos.

Tengo un gran problema intentando consumir un web service en .net con dataset tipados, desde mi aplicación php.

Yo mando los parámetros como debería, pero la respuesta del server es como si no recibiese nada, es decir, el formato que tengo que pasarle no es correcto, lo raro, es que con un web service que hace lo mismo montado en php funciona perfectamente, así que seguro que es algo de los coleguillas de microsoft que como de costumbre no es standard y no lo indica en ningún sitio.

Alguien podría indicarme si hay alguna diferencia entre cómo enviar los parámetros a un web service en php y a otro en .net.

Vamos avanzando.

El problema tiene que esta aquí.

<ReservaRQResult>dataset</ReservaRQResult>

Lo define como un dataset, alguien sabe si hay que hacer algo al xml para transformarlo en un dataset. He probado con un web service definido con esto definido como string y funciona, pero no consigo que este webService me responda.

Gracias por todo aunque no sepais la respuesta, seguiremos pegándonos.

Saludos.

Última edición por bomaye; 28/01/2008 a las 15:56
  #2 (permalink)  
Antiguo 28/02/2008, 08:55
 
Fecha de Ingreso: febrero-2008
Mensajes: 1
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: consumir un web service .net con dataset tipados desde php

hola bomaye te escribo porque tengo el mismo problema que tienes o tuviste en realidad.

por favor, te agradeceria que me heches una manito con algun ejemplo si es que lo lograste hacer.
estoy desde php conectandome al siguiente web service
http://webservice.implementos.cl/appWSECommerce/wsecommerce.asmx
wsdl : http://webservice.implementos.cl/appWSECommerce/wsecommerce.asmx?WSDL

tengo el Sgt. codigo para consumirlo:
Código PHP:
<?php
require_once('../nusoap-0.7.3/lib/nusoap.php');

$variable "131883978"// Rut de prueba

$oSoapClient = new soapclient('http://webservice.implementos.cl/appWSECommerce/wsecommerce.asmx?WSDL'true);

if (
$sError $oSoapClient->getError()) {
   echo 
"No se pudo realizar la operación [" $sError "]"
   die(); 
}

//$aParametros = array("str_rut" => $variable); 
$respuesta $oSoapClient->call("ws_articulo_precio"); 
           

// Existe alguna falla en el servicio?
if ($oSoapClient->fault) { // Si
echo "llegue hasta aqui";
echo 
$oSoapClient->getError();
die();
} else { 
// No
$sError $oSoapClient->getError();
// Hay algun error ?
if ($sError) { // Si
echo 'Error:' $sError;
die();
}


}

?>

<html>
<body>

<table width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2"><div align="center">ws_articulo_precio</div></td>
</tr>
<tr>
<td width="61">resultado:</td>
<td width="339"><pre><? 
//var_dump($respuesta);

var_dump($respuesta);

/*foreach ($respuesta as $iClave => $aElemento)
  echo "<option value='".$aElemento["wmo"]."'>".$aElemento["Precio"]."</option>"; */
?></pre></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
</table>

</body>
</html>
eso me esta retornando al marecer algo asi como el esquema del response, pero vacio y al final hay un tipo llamado "dataset" he ahi donde creo que esta el problema no se como parsear eso y vaciarlo a alguna matriz o objeto. gracais de ante mano Un saludo.
  #3 (permalink)  
Antiguo 05/03/2008, 10:49
 
Fecha de Ingreso: marzo-2008
Mensajes: 1
Antigüedad: 16 años, 8 meses
Puntos: 0
De acuerdo Re: consumir un web service .net con dataset tipados desde php

Tal vez te pueda ayudar con tu inquietud:

cuando obtienes la respuesta del servicio el te devuelve un xml, solo que PHP lo captura o lo asocia en forma de array, cuando escribes la respuesta por medio de:

Código PHP:
var_dump($respuesta); 
te muestra el dataset tipado de .net en un array de PHP

tu solucion podria ser esta:

Código PHP:
foreach ($respuesta['ws_articulo_precioResult']['diffgram']['NewDataSet']['Table'] as $iClave => $aElemento)
  echo 
"<option value='".$aElemento["mar_cod_articulo"]."'>".$aElemento["Precio"]."</option>"
te recomiendo que aprendas a usar la función siguiente ya que esta te muestra de forma jerárquica como es el array mejor dicho te lo pone mas bonito que var_dump().

Código PHP:
print_r($respuesta); 
Pero aparte de tu problema yo tambien tengo otro lo que quiero hacer el proceso inverso de enviarle al servicio un datase tipado espero que algunos de ustedes me pueda colaborar con esta inquietud, gracias
Bno eso ha sido todo espero que te ayude chao
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 21:37.