Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Ayuda con web service...es urgente!!!

Estas en el tema de Ayuda con web service...es urgente!!! en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola amigos .....para variar sufriendo con los servicios web, necesito una ayuda urgente , ahora tengo que conectarme desde php aun web service en wcf,para ...
  #1 (permalink)  
Antiguo 06/01/2011, 15:38
 
Fecha de Ingreso: diciembre-2008
Mensajes: 84
Antigüedad: 15 años, 4 meses
Puntos: 0
Ayuda con web service...es urgente!!!

Hola amigos .....para variar sufriendo con los servicios web, necesito una ayuda urgente , ahora tengo que conectarme desde php aun web service en wcf,para recibir los datos no tengo problemas pero tengo que enviar los datos a un servicio el cual recibe un arreglo de datos.

Este es el arreglo "DatosDetalleConsumo" que recibe el web service:

<d4p1:DatosDetalleConsumo>
<d4p1:Cantidad>10</d4p1:Cantidad>
<d4p1:CodigoConsumo>30</d4p1:CodigoConsumo>
<d4p1:FechaConsumo>2010-12-01T16:51:00</d4p1:FechaConsumo>
<d4p1:IdCasino>1</d4p1:IdCasino>
<d4p1:IdTipoServicio>1</d4p1:IdTipoServicio>
<d4p1:NumeroContrato>4500002505</d4p1:NumeroContrato>
<d4p1:RutContratista>78454860-0</d4p1:RutContratista>
<d4p1:ValorNeto>15</d4p1:ValorNeto>
</d4p1:DatosDetalleConsumo>

He realizado el envio de 3 formas y tengo error:

Forma 1:

$client = new SoapClient('http://IP/DemandaWs/Demandas.svc?wsdl');
$param = array('Cantidad' => $Cantidad,'CodigoConsumo' => $CodigoConsumo,
'FechaConsumo' =>$FechaConsumo, 'IdCasino' => $IdCasino, 'IdTipoServicio' => $IdTipoServicio,'NumeroContrato' => $NumeroContrato,
'RutContratista' => $RutContratista,'ValorNeto' => $ValorNeto);
$result =$client->Consumos($param);
var_dump($param);

De esta Forma me retorno el sgte error:

object(stdClass)#2 (1) { ["ConsumosResult"]=> object(stdClass)#3 (3) { ["ConError"]=> bool(true) ["Detalle"]=> string(40) "El par{ametro consumos no puede ser nulo" ["Mensaje"]=> string(43) "El informe de consumo debe contener valores" } }


Converse con el proveedor del Servicio y me indico que estaba enviando los parametros en forma directa al servicio y que no estaba pasando primero por el arreglo DatosDetalleConsumo, me indico que en .net ello hacia asi:

using (DemandasClient proxy = new DemandasClient())
{
List<DatosDetalleConsumo> detallesConsumo = new List<DatosDetalleConsumo>();

detallesConsumo.Add(new DatosDetalleConsumo() { Cantidad = 0, CodigoConsumo = 1, FechaConsumo = DateTime.Now, IdCasino = 1, IdTipoServicio = 1, NumeroContrato = "4500002505", RutContratista = "78454860-0", ValorNeto = 100 });

Respuesta r = proxy.Consumos(detallesConsumo);
}

Por lo tanto intente hacerlo asi

Forma 2

$client = new SoapClient('http://10.120.2.30/DemandaWs/Demandas.svc?wsdl');
$param = array('DatosDetalleConsumo' => array('Cantidad' => $Cantidad,'CodigoConsumo' => $CodigoConsumo,
'FechaConsumo' =>$FechaConsumo, 'IdCasino' => $IdCasino, 'IdTipoServicio' => $IdTipoServicio,'NumeroContrato' => $NumeroContrato,
'RutContratista' => $RutContratista,'ValorNeto' => $ValorNeto));
$result =$client->Consumos($param);
var_dump($param);

Forma 3

$client = new SoapClient('http://10.120.2.30/DemandaWs/Demandas.svc?wsdl');
$param = array('Cantidad' => $Cantidad,'CodigoConsumo' => $CodigoConsumo,'FechaConsumo' =>$FechaConsumo, 'IdCasino' => $IdCasino, 'IdTipoServicio' => $IdTipoServicio,'NumeroContrato' => $NumeroContrato, 'RutContratista' => $RutContratista,'ValorNeto' => $ValorNeto);
$result =$client->Consumos("DatosDetalleConsumo",$param);
var_dump($result);


El error que me indica para las formas 2 y 3 :

Fatal error: Uncaught SoapFault exception: [a:DeserializationFailed] The formatter threw an exception while trying to deserialize the message: Error in deserializing body of request message for operation 'Consumos'. End element 'Body' from namespace 'http://schemas.xmlsoap.org/soap/envelope/' expected. Found element 'param1' from namespace ''. Line 2, position 149. in C:\Archivos de programa\Apache Group\Apache2\htdocs\WEB\consumo.php:26 Stack trace: #0 C:\Archivos de programa\Apache Group\Apache2\htdocs\WEB\consumo.php(26): SoapClient->__call('Consumos', Array) #1 C:\Archivos de programa\Apache Group\Apache2\htdocs\WEB\consumo.php(26): SoapClient->Consumos('DatosDetalleCon...', Array) #


El problema que tengo es que no se como pasar los parametros al arreglo que recibe el servicio?
Se agradece cualquier ayuda....
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 13:53.