Foros del Web » Programación para mayores de 30 ;) » Java »

Como consumir un servicio web Java desde PHP

Estas en el tema de Como consumir un servicio web Java desde PHP en el foro de Java en Foros del Web. La pregunta que tengo es que una vez que he hecho un servicio web en Java, en mi caso usando NetBeans 5.0, lo he probado ...
  #1 (permalink)  
Antiguo 26/10/2006, 03:35
Avatar de jmsev  
Fecha de Ingreso: abril-2006
Mensajes: 47
Antigüedad: 18 años
Puntos: 0
Como consumir un servicio web Java desde PHP

La pregunta que tengo es que una vez que he hecho un servicio web en Java, en mi caso usando NetBeans 5.0, lo he probado y se que funciona bien. ¿¿¿¿ como puedo consumirlo desde php ???
Yo lo estoy intentando hacer con nuSoap, llamando al documento WSDL que me generó el web service Java, pero siempre obtengo error.

¿¿alguna ayuda ??

gracias por la atención.
salu2
  #2 (permalink)  
Antiguo 26/10/2006, 09:05
Avatar de Valkam  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 17 años, 10 meses
Puntos: 0
Es muy muy sencillo. Si tienes bien construido el WSDL es tan facil com incluir el archivo nuSoap.php y hacer la llamada al servicio. En este enlace tienes un ejemplo muy bien explicado:

3(w)malditainternet(com)/node/1169


Perdona aun no puedo poner enlaces
  #3 (permalink)  
Antiguo 07/11/2006, 03:53
Avatar de jmsev  
Fecha de Ingreso: abril-2006
Mensajes: 47
Antigüedad: 18 años
Puntos: 0
Explico el error

Yo hago correctamente la llamada al web service, ya que hago lo siguiente:
Código PHP:
require_once('nusoap.php');
 
$client = new soapclient('ht...//localhost:8080/HiWS/HiWS?WSDL''true');

$s = array("Juanma");

$result $client->call('sayHi'$s);

//Buscamos un fallo
if ($client->fault){
    echo 
'<p><b>Fallo: ';
    echo 
'</b></p>';
}else{
    
//Buscamos errores
    
$err $client->getError();
    if (
$err){
        
//Mostramos el error
        
echo '<p><b>Error: '.$err.'</b></p>';
    }else{
        
//Mostramos los resultados
        
print_r($result);
    }

Pero cuando lo llamo desde apache me sale por pantalla el siguiente error:
Error: wsdl error: phpType is struct, but value is not an array: see debug output for details



Alguna idea de por que sale este error, o como solucionarlo??
  #4 (permalink)  
Antiguo 07/11/2006, 10:23
Avatar de Valkam  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 17 años, 10 meses
Puntos: 0
Error en la llamada a Web Service

Que devuelve la función "sayHi". Es posible que estes intentando mapear a un array la respuesta SOAP cuando no es un array
  #5 (permalink)  
Antiguo 07/11/2006, 11:47
Avatar de Valkam  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 17 años, 10 meses
Puntos: 0
Fallo en la llamada a Web Service

Me retracto del mensaje anterior. Creo que el problema está en el parámetro que le pasas en la llamada a call.

Los parametros que debes pasarlo depende de como hayas implementado el método sayHi.

Prueba con lo siguiente:

Código PHP:
$s "Juanma";

$result $client->call('sayHi'$s); 
  #6 (permalink)  
Antiguo 08/11/2006, 10:41
Avatar de jmsev  
Fecha de Ingreso: abril-2006
Mensajes: 47
Antigüedad: 18 años
Puntos: 0
Progresando en el error

Gracias amigo por tu ayuda.
Ahora el error que daba parece ser que se ha solucionado, pero sigue sin funcionar el web service, ya que ahora obtengo el siguiente fallo:
JAXRPCTIE01: se obtuvo una excepción al administrar la solicitud: operación desconocida: parameters
Si quieres te puedo mandar el documento WSDL y el php para que hagas las pruebas en tu mismo y veas lo extraño que resulta todo esto.

No obstante tambien he leido por la web que es posible que creemos un servicio web en java y que despues este no pueda ser llamado desde otra tecnologia, como en este caso php.
Sabes algo de esto???
  #7 (permalink)  
Antiguo 10/11/2006, 03:00
Avatar de Valkam  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 17 años, 10 meses
Puntos: 0
Llamada Web Service

No creo que sea problema de que el WSDL o los web services se hayan generado a través de Java. ¿Como has generado el WSDL?
Los web services estan pensados precisamente para conseguir interoperabilidad entre tecnologías homogéneas.

Puedes poner publico el WSDL en algun servidor para poder experimentar con el??

Un Saludo
  #8 (permalink)  
Antiguo 10/11/2006, 05:37
Avatar de jmsev  
Fecha de Ingreso: abril-2006
Mensajes: 47
Antigüedad: 18 años
Puntos: 0
Te explico como lo he hecho

Para crear el servicio web he usado NetBeans 5.0, y he seguido el manual que trae éste para crear el servicio web. Como ya te he dicho desde netBeans me funciona correctamente y después no se porque me falla cuando lo llamo desde php.

Con respecto a la interoperabilidad llevas toda la razón en eso de que los servicios web han sido creados para que se usen en distintas tecnologías pero es que leí por algún sitio de la web que el fallo se podía dar por un fallo en la generación del WSDL. Si quieres busco donde leí y te mando el enlace.

Por otra parte no se donde puedo colgar el documento WSDL para que puedas acceder a él, ya que yo estoy haciendo pruebas con equipos locales.
No obstante si necesitas el código con el que he creado el servicio, o el WSDL te le mando a tu correo si quieres.

La verdad es que esta duda me inquieta un montón, y además necesito solucionarla para poder seguir con el desarrollo de mi proyecto.

Nuevamente gracias, y haber si lo solucionamos.
salu2.
  #9 (permalink)  
Antiguo 07/01/2011, 15:53
 
Fecha de Ingreso: octubre-2009
Mensajes: 2
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Como consumir un servicio web Java desde PHP

A mi me pasa lo mismo pero al reves, he creado un webservice en PHP y me funciona muy bien si lo consulto por php pero al intentar consultarlo desde java me aparece un error con el WSDL.
Donde puedo conseguir informacion para el manejo de webservices , como hago para hacer el llamado de Hi.php?WSDL y no Hi.wsdl ???

Agradezco me colaboren!!!!
GRACIAS!
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 14:32.