Foros del Web » Programando para Internet » PHP »

Consumir WebService con NuSOAP?

Estas en el tema de Consumir WebService con NuSOAP? en el foro de PHP en Foros del Web. Muy buenas sres de ForosdelWeb: En estos momentos estoy teniendo un problema, ya que no puedo consumir de buena forma un web service, les presentare ...
  #1 (permalink)  
Antiguo 08/10/2007, 11:36
 
Fecha de Ingreso: octubre-2007
Mensajes: 28
Antigüedad: 16 años, 6 meses
Puntos: 2
Consumir WebService con NuSOAP?

Muy buenas sres de ForosdelWeb:

En estos momentos estoy teniendo un problema, ya que no puedo consumir de buena forma un web service, les presentare en detalle mi problema y codigo.

Datos necesarios del WebService

<s:complexType name="SendaDocente">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ApellidoPaterno" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="ApellidoMaterno" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="DigitoVerificadorRUT" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Direccion" type="tns:Direccion"/>
<s:element minOccurs="0" maxOccurs="1" name="Email" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="EstadoCivil" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="FechaNacimiento" type="s:dateTime"/>
<s:element minOccurs="0" maxOccurs="1" name="LugarNacimiento" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Nombres" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Rut" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="Sexo" type="tns:Sexo"/>
<s:element minOccurs="0" maxOccurs="1" name="Telefonos" type="tns:ArrayOfTelefono"/>
</s:sequence>
</s:complexType>

Para mas detalle dejo un link de un doc con un trozo del webservice
http://mcctemuco.org/alvaro/getDocentes.doc


Codigo PHP:
<?php
require_once('lib/nusoap.php');
$oSoapClient = new soapclient('http://mi_servidor/WSSendaUFRO.asmx?WSDL', true);

$aParametros = array("IdCicloLectivo" => 2007 );
$respuesta = $oSoapClient->call("GetFeriados",$aParametros);

echo $respuesta['GetFeriadosResult'];
print_r($respuesta);

?>

El problema que tengo es en el resultado.

Puesto que necesito obtener;
ApellidoPaterno
ApellidoMaterno
....
LugarNacimiento

Si alguien sabe una forma de como hacerlo... ojala me ayude.. desde ya muchas gracias.


Alvaro

Última edición por neodarklinux; 08/10/2007 a las 11:39 Razón: Agregar mas informacion
  #2 (permalink)  
Antiguo 08/10/2007, 14:09
Avatar de helder  
Fecha de Ingreso: agosto-2007
Ubicación: Colombia
Mensajes: 50
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: Consumir WebService con NuSOAP?

haber, he realizado varios webservces utilizando nusoap y pues me gustaria colaborarte, pero para eso necesito que te expliques mejor.
te hago unas pregunta.
- el webservice esta funcionando adecuadamente. osea cuando te dirijes a la pagina que tiene el webservice te muestra el nombre[namespace], te enumera los servicios y las especificacion de cada servicio ?
  #3 (permalink)  
Antiguo 08/10/2007, 16:37
 
Fecha de Ingreso: octubre-2007
Mensajes: 28
Antigüedad: 16 años, 6 meses
Puntos: 2
Re: Consumir WebService con NuSOAP?

Dejo el WebService en estos momentos esta funcionando... es un demo.. para un proyecto educativo.

http://200.69.26.19:8085/WSSendaUFRO.asmx?WSDL

Saludos
  #4 (permalink)  
Antiguo 09/10/2007, 09:44
Avatar de helder  
Fecha de Ingreso: agosto-2007
Ubicación: Colombia
Mensajes: 50
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: Consumir WebService con NuSOAP?

Pues segun lo que observo el servicio web que has implementado al parecer estan bien , pero de fondo puedes tener problemas en la manera que retornas los valores en las funciones del servicio. no se si me explico asi que te voy a postear un ejemplo haber si te ayuda en tu problema.
esta implementado con nusoap + PHP tanto el cliente como el servicio web pero en teoria se debe hacer igual en cualquien lenguaje (asp.net).

---servicio Web (webser.php) -----

<?php
require_once("nusoap/lib/nusoap.php");
$namespace="http://localhost/prueba/webservices/nusoap";
$server = new soap_server();
$server->configureWSDL('Servicio Web',$namespace);
$server->wsdl->schemaTargetNamespace=$namespace;
$server->register('weserprueba',array( 'x' => 'xsd:int','y'=>'xsd:int'),array('suma' => 'xsd:int','resta'=>'xsd:int','multiplicacion'=>'xsd:int','division'=>'xsd:int'),$namespace);
function weserprueba($x,$y){
$suma=$x+$y;
$resta=$x-$y;
$multiplicacion=$x*$y;
$division=$x/$y;
return array('suma'=>$suma,'resta'=>$resta,'multiplicacion'=>$multiplicacion,'division'=>$division);
}
$server->service($HTTP_RAW_POST_DATA);
?>

------------------------------------------------
----WSDL - XML-----------------------------------

<definitions targetNamespace="http://localhost/prueba/webservices/nusoap">
-
<types>
-
<xsd:schema targetNamespace="http://localhost/prueba/webservices/nusoap">
<xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
</xsd:schema>
</types>
-
<message name="weserpruebaRequest">
<part name="x" type="xsd:int"/>
<part name="y" type="xsd:int"/>
</message>
-
<message name="weserpruebaResponse">
<part name="suma" type="xsd:int"/>
<part name="resta" type="xsd:int"/>
<part name="multiplicacion" type="xsd:int"/>
<part name="division" type="xsd:int"/>
</message>
-
<portType name="Servicio WebPortType">
-
<operation name="weserprueba">
<input message="tns:weserpruebaRequest"/>
<output message="tns:weserpruebaResponse"/>
</operation>
</portType>
-
<binding name="Servicio WebBinding" type="tns:Servicio WebPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
-
<operation name="weserprueba">
<soap:operation soapAction="http://localhost/prueba/webservices/webser.php/weserprueba" style="rpc"/>
-
<input>
<soap:body use="encoded" namespace="http://localhost/prueba/webservices/nusoap" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
-
<output>
<soap:body use="encoded" namespace="http://localhost/prueba/webservices/nusoap" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
-
<service name="Servicio Web">
-
<port name="Servicio WebPort" binding="tns:Servicio WebBinding">
<soap:address location="http://localhost/prueba/webservices/webser.php"/>
</port>
</service>
</definitions>

-------------------------------------------
---cliente, consumido del servicio------

<?php
require_once('nusoap/lib/nusoap.php');
$oSoapClient = new soapclient('http://localhost/prueba/webservices/webser.php','wsdl');
$aParametros = array("x"=> 5,"y" => 4 );
$respuesta = $oSoapClient->call("weserprueba",$aParametros);
print_r($respuesta);
?>
----------------------------------------

La salida en el navegador es:

Array ( [suma] => 9 [resta] => 1 [multiplicacion] => 20 [division] => 1 )
  #5 (permalink)  
Antiguo 09/10/2007, 13:25
 
Fecha de Ingreso: octubre-2007
Mensajes: 28
Antigüedad: 16 años, 6 meses
Puntos: 2
Re: Consumir WebService con NuSOAP?

Mi problema es el siguiente, el webservice no lo puedo modificar, solo puedo consumir la informacion que me entrega, puesto que es de otro sistema.

Por ejemplo se que de esta forma:

echo = $respuesta['GetCicloLectivoResult']['IdCicloLectivo'];
echo = $respuesta['GetCicloLectivoResult']['FechaDesde'];
echo = $respuesta['GetCicloLectivoResult']['FechaHasta'];

Puedo obtener esos datos, pero mi problema es acceder a un complexType

Solo quisiera saber como obtener los datos de este complextype:
complexType name="SendaDocente">

Que contiene todos estos elemtos:

<s:element minOccurs="0" maxOccurs="1" name="ApellidoPaterno" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="ApellidoMaterno" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="DigitoVerificadorRUT" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Direccion" type="tns:Direccion"/>
<s:element minOccurs="0" maxOccurs="1" name="Email" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="EstadoCivil" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="FechaNacimiento" type="s:dateTime"/>
<s:element minOccurs="0" maxOccurs="1" name="LugarNacimiento" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Nombres" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Rut" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="Sexo" type="tns:Sexo"/>
<s:element minOccurs="0" maxOccurs="1" name="Telefonos" type="tns:ArrayOfTelefono"/>


Ojala puedan ayudarme.. la verdad.. estoy a punto de colapsar neuronalmente jejeje... y muchas gracias.


Alvaro
  #6 (permalink)  
Antiguo 11/10/2007, 12:15
 
Fecha de Ingreso: octubre-2007
Mensajes: 28
Antigüedad: 16 años, 6 meses
Puntos: 2
Re: Consumir WebService con NuSOAP?

Alguien que ayude... please..
  #7 (permalink)  
Antiguo 16/10/2007, 15:13
 
Fecha de Ingreso: octubre-2007
Mensajes: 28
Antigüedad: 16 años, 6 meses
Puntos: 2
Re: Consumir WebService con NuSOAP?

Parece que este tema quedo en el olvido, bueno.. muchas gracias
  #8 (permalink)  
Antiguo 17/10/2007, 15:51
Avatar de helder  
Fecha de Ingreso: agosto-2007
Ubicación: Colombia
Mensajes: 50
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: Consumir WebService con NuSOAP?

que te parece amigo, la verdad es que yo estuve haciendo pruebas con tu web service pero por ningun lado.
no se si tu sabes que es eso del complextype asi que te comento que esta etiqueta XML referencia tipos de datos que han sido creados por el usuario como ejemplo matrices o estructuras en el caso de este servicio web que retorna una variable de nombre GetDocentesResult tipo de dato ArrayOfSendaDocente, pero este tipo de dato es una estructura que tiene un campo de nombre SendaDocente y con tipo de dato SendaDocente el cual es otra estructura y que tiene los campo que posteaste anteriormente.
en varias ocaciones he necesitado retornar de web service matrices o datos complejos donde se utilican estructuras y problemas parecidos se pueden presentar pero en su mayoria son por la mala creacion del tipo de dato en el webservice.

espero te sirva de algo esto .. si encuentras el problema postealo nos puede servir a muchos.
si quieres mas informacion sobre lo escrito chequeate este pagina

http://www.hlibco.com.br/webservice-...ient-e-server/
hay un ejemplo que funciona bien.
  #9 (permalink)  
Antiguo 21/10/2007, 12:24
 
Fecha de Ingreso: octubre-2007
Mensajes: 28
Antigüedad: 16 años, 6 meses
Puntos: 2
Re: Consumir WebService con NuSOAP?

Gracias Helder, te comento que yo no cree el Web Service, el proyecto de nosotros solo debe consumir esos Web Service, no podemos modificarlos... igual quiero aprender mas de Web Service, pero lo que nos urge ahora es poder consumirlo....


Tendre en cuenta tus palabras.... muchas 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.
Tema Cerrado




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