Foros del Web » Programando para Internet » PHP »

nodos repetidos nusoap

Estas en el tema de nodos repetidos nusoap en el foro de PHP en Foros del Web. buenas tardes. Quisiera hacer una pregunta y he tratado por todos los medios y no he podido dar con el chiste. Debo hacer una llamada ...
  #1 (permalink)  
Antiguo 28/03/2009, 16:25
 
Fecha de Ingreso: diciembre-2008
Mensajes: 26
Antigüedad: 15 años, 4 meses
Puntos: 0
Pregunta nodos repetidos nusoap

buenas tardes.

Quisiera hacer una pregunta y he tratado por todos los medios y no he podido dar con el chiste.

Debo hacer una llamada a un web service que pide como parametros de entrada para generar el xml un nodo varias veces, es decir, debo generar una consulta de las siguientes caracteristicas:

<ReferenceArray>Dato1</ReferenceArray>
<ReferenceArray>Dato2</ReferenceArray>
<ReferenceArray>Dato3</ReferenceArray>
<ReferenceArray>Dato4</ReferenceArray>
<ReferenceArray>Dato5</ReferenceArray>

El problema radica en que cuando llamo a la funcion call del nusoap hay que pasarle un arreglo con los parametros y si le paso dentro del arreglo el nodo ReferenceArray varias veces pues se sobreescriben los indices.

No se si a alguno de ustedes les haya pasado. Les agradeceria toda la ayuda que me puedan brindar ya que es de suma urgencia terminar esto.

Gracias
  #2 (permalink)  
Antiguo 31/03/2009, 14:25
 
Fecha de Ingreso: diciembre-2008
Mensajes: 26
Antigüedad: 15 años, 4 meses
Puntos: 0
Información Respuesta: nodos repetidos nusoap

Agradezco toda la ayuda que me prestaron ustedes. El cacharreo nos ayuda a encontrar las soluciones, la dejo aqui por si a alguno se le presenta un problema similar:

Algo que no sabia, es que los parametros del web service se pueden pasar por arreglos o se puede crear directamente el xml en los parametros de envio.

Por lo general hacemos lo siguiente:

$client = new soapclient(URLWEBSERVICE, true);//Deben tener en cuenta que PHP en la version 5 ya tiene un metodo llamado soapclient, similar al que tiene la libreria NuSoap. Por tal motivo deben modificar el nombre de la clase que encapsula la informacion por el que ustedes deseen. Particularmente el mio lo llame nusoap_client.
$err = $client->getError();
if ($err) {
echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
}

$param[] = array(
'nodo1' => valor1,
'nodo2' => valor2
);

$result = $client->call('metodoWebService', array($param));

y podemos imprimir en pantalla lo que enviamos y lo que nos devuelve el web service

echo '<pre>';
print_r($result);
echo '</pre>';
// Mostramos lo que enviamos
echo '<h2>Request</h2>';
echo '<pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
// Mostramos la respuesta
echo '<h2>Response</h2>';
echo '<pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';
// Mostramos el debug del Web Service
echo '<h2>Debug</h2>';
echo '<pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>';

Hasta aqui es como trabajamos si no tenemos mucha experiencia con NuSoap, como es mi caso.

Bueno, el problema se complica cuando debemos pasarle el mismo nodo varias veces, ya que en un arreglo, cuando asignamos al mismo nodo el valor de distintas variables pues se sobreescribe, lo que nos deja sin oportunidades.

Lo que debemos hacer es armar la llamada xml y pasarla al metodo call del NuSoap.

$param = '<MetodoWebService xmlns="URLMetodoWebservices">
<nodo1>'.valor1.'</nodo1>
<nodo2>'.valor2.'</nodo2>
<nodoRepite>'.valor3.'</nodoRepite>
<nodoRepite>'.valor4.'</nodoRepite>
<nodoRepite>'.valor5.'</nodoRepite>
</MetodoWebService>';

$result = $client->call('MetodoWebService', $param);

En este caso deben jugar bastante con las respuestas y el envio de informacion al Web Service.

De ser necesario deben pasarle todos los parametros al metodo call del NuSoap, como son por ejemplo: '', '', false, false);

quedaria asi: $result = $client->call('MetodoWebService', $param, '', '', false, false);

si no les funciona deben modificar el ultimo parametro a true o false, dependiendo del web service con el que se estan comunicando.

Espero les sirva esta informacion.

Hago la aclaracion que no llegue solo a esta solucion que me tuvo mas de una semana en esto. Todos los creditos van para Ahm Asaduzzaman, quien publico la solucion para que nosotros generaramos el xml. Desafortunadamente no puedo mostrar la direccion por que no cumplo con los requisitos del foro, pero pueden buscarla en google, con las palabras clave "Building XML Web Services with PHP NuSOAP", por lo general es el primer vinculo que aparece en la busqueda por si le quieren echar un vistazo. lo que yo hice fue ser recursivo y trabajar con los request y response del servidor con el que me estoy conectando y combinarla con la solucion que da él.

Si tienen alguna duda y les puedo colaborar con el mayor de los gustos. No duden en comentar.

Lamento esta circular, es que este seria mi primer "tutorial" y queria que quedara muy bien.

Saludos desde Colombia.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:58.