Ir al contenido


Foto

Como utilizar Web Service desde una pc CLIENTE


  • Por favor identifícate para responder
18 respuestas en este tema

#1 ginkaku

ginkaku

    Member

  • Miembros
  • PipPip
  • 12 mensajes

Escrito 24 septiembre 2013 - 10:44

Muy buenas a todos, recientemente logre configurar el iis y mi webservice creado con delphi, todo marcha de maravilla cuando hago una aplicacion cliente consume el webservice sin complicaciones. Pues bien ahora me gustaria llevar mi aplicacion cliente a otra PC dentro de mi red pero que ya no va a ser la pc servidor local y el iis. Brevemente lei sobre habilitar los puertos, el firewall, ect., pero no tengo conocimiento de esto y les agradeceria si me explicaran de la misma forma que sus tutoriales anteriores referentes a webservice. Un saludo gente! y gracias de antemano
  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 25 septiembre 2013 - 08:36

Bueno, será necesario lo siguiente:

Desde los equipos remotos deberás referenciar al webservice por el dsn del servidor o la ip.
en el servidor deberás habilitar en el firewall los puertos por los que atiende tu webservice.

  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 25 septiembre 2013 - 08:40

Muy buenas a todos, recientemente logre configurar el iis y mi webservice creado con delphi, todo marcha de maravilla cuando hago una aplicacion cliente consume el webservice sin complicaciones. Pues bien ahora me gustaria llevar mi aplicacion cliente a otra PC dentro de mi red pero que ya no va a ser la pc servidor local y el iis. Brevemente lei sobre habilitar los puertos, el firewall, ect., pero no tengo conocimiento de esto y les agradeceria si me explicaran de la misma forma que sus tutoriales anteriores referentes a webservice. Un saludo gente! y gracias de antemano


Eso es fácil, te muestro una porción del tutorial Consumir WebService con acceso a Base de Datos en el Capí­tulo 4. Crear la aplicación Cliente donde se explica como habilitar una aplicación cliente para que funciones desde otros equipos.

 

Por último vamos a modificar nuestra unidad IwsClientes1 para que podamos modificar en tiempo de ejecución los valores de nuestro WSDL y la URL de nuestro Web Service lo cual nos será muy útil para ejecutar nuestra aplicación cliente desde otras computadoras ya sea en la Red Local o en Internet.

Cuando nuestra unidad IwsClientes1 nos generó las constantes mencionadas de esta forma:



delphi
  1. function GetIwsClientes(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): IwsClientes;
  2. const
  3.   defWSDL = '[url]http://localhost/WSClientes/wsClientes.dll/wsdl/IwsClientes';[/url]
  4.   defURL  = '[url]http://localhost/WSClientes/wsClientes.dll/soap/IwsClientes';[/url]
  5.   defSvc  = 'IwsClientesservice';
  6.   defPrt  = 'IwsClientesPort';



Lo que vamos a hacer es "convertir" las constantes defWSDL y defURL a variables para poder modificarlas en tiempo de ejecución y asignarlas a través de la lectura de un archivo INI y agregar varias unidades en el uses



delphi
  1. uses SysUtils, IniFiles, Forms;
  2.  
  3. var
  4.   IniFile: TIniFile;
  5.   defWSDL,defURL : widestring; //Extraemos estas constantes para convertirlas
  6.                               //en variables y poder manipularlas en tiempo de ejecución



Agregamos el código necesario para leer el archivo INI y para asignar los valores a dichas variables como se indica a continuación:



delphi
  1.   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'conf.ini');
  2.   defWSDL := IniFile.ReadString('CONFIGURACION','WSDL','');
  3.   defURL  := IniFile.ReadString('CONFIGURACION','URL','');
  4.   IniFile.Free;



Esto deberá agregarse a la función:



delphi
  1. function GetIwsClientes(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): IwsClientes;



Y finalmente la función deberá quedar de la siguiente forma:



delphi
  1. implementation
  2.  
  3. uses SysUtils, IniFiles, Forms;
  4.  
  5. var
  6.   IniFile: TIniFile;
  7.   defWSDL,defURL : widestring; //Extraemos estas constantes para convertirlas
  8.                               //en variables y poder manipularlas en "runtime"
  9.  
  10. function GetIwsClientes(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): IwsClientes;
  11. const
  12.   defSvc  = 'IwsClientesservice';
  13.   defPrt  = 'IwsClientesPort';
  14. var
  15.   RIO: THTTPRIO;
  16. begin
  17.   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'conf.ini');
  18.   defWSDL := IniFile.ReadString('CONFIGURACION','WSDL','');
  19.   defURL  := IniFile.ReadString('CONFIGURACION','URL','');
  20.   IniFile.Free;
  21.   Result := nil;
  22.   if (Addr = '') then
  23.   begin
  24.     if UseWSDL then
  25.       Addr := defWSDL
  26.     else
  27.       Addr := defURL;
  28.   end;
  29.   if HTTPRIO = nil then
  30.     RIO := THTTPRIO.Create(nil)
  31.   else
  32.     RIO := HTTPRIO;
  33.   try
  34.     Result := (RIO as IwsClientes);
  35.     if UseWSDL then
  36.     begin
  37.       RIO.WSDLLocation := Addr;
  38.       RIO.Service := defSvc;
  39.       RIO.Port := defPrt;
  40.     end else
  41.       RIO.URL := Addr;
  42.   finally
  43.     if (Result = nil) and (HTTPRIO = nil) then
  44.       RIO.Free;
  45.   end;
  46. end;



Para que esto funcione correctamente necesitaremos crear un Archivo INI de nombre conf.ini en el directorio de nuestra aplicación y deberá contener lo siguiente:



delphi
  1. [CONFIGURACION]
  2. WSDL="http://localhost/WSClientes/WSClientes.dll/wsdl/IwsClientes"
  3. URL="http://localhost/WSClientes/WSClientes.dll/soap/IwsClientes"



Compilamos y ejecutamos nuestra aplicación cliente y si todo se ha realizado correctamente ya tenemos nuestra aplicación funcionando y consumiendo las funciones del Web Service.

 

Saludos
  • 0

#4 ginkaku

ginkaku

    Member

  • Miembros
  • PipPip
  • 12 mensajes

Escrito 25 septiembre 2013 - 09:53

Gracias por las respuestas poliburro y egostar.... (b) Haciendo esos pequeños cambios la aplicación cliente de prueba corre de maravilla en todas mis computadoras. Quisiera añadir para futuras consultas a este tipo de problemas que es muy importante manejar la teoria y conceptos que pocas veces leemos(soy de esos), si hubiera utilizado el nombre del servidor desde un comienzo todo hubiera sido mejor. he aqui un poco de mi codigo de prueba:
[cpp]namespace NS_ISumita {

_di_ISumita GetISumita(bool useWSDL, System::String addr, Soaphttpclient::THTTPRIO* HTTPRIO)
{
  static const char* defWSDL= "http://ginkaku:8850/.../wsdl/ISumita";
  static const char* defURL = "http://ginkaku:8850/.../soap/ISumita";
  static const char* defSvc = "ISumitaservice";
  static const char* defPrt = "ISumitaPort";
  if (addr=="")
    addr = useWSDL ? defWSDL : defURL;
  Soaphttpclient::THTTPRIO* rio = HTTPRIO ? HTTPRIO : new Soaphttpclient::THTTPRIO(0);
  if (useWSDL) {
    rio->WSDLLocation = addr;
    rio->Service = defSvc;
    rio->Port = defPrt;
  } else {
    rio->URL = addr;
  }
  _di_ISumita service;
  rio->QueryInterface(service);
  if (!service && !HTTPRIO)
    delete rio;
  return service;
}[/cpp]
Ya utilizando el nombre del servidor y el puerto previamente habilitado no queda mas nada por hacer como explicaba egostar en tutoriales pasados. Me parece excelente la sugerencia de usar un carchivo config.ini lo hare en este momento
Por si acaso añadire estos pasos para habilitar un puerto(en mi caso windows 7 y 8).-

1. te vas a inicio y escribis “firewall windows” y accedes a donde te muestra “firewall de windows”.
2. cuando se abre la ventana te dirigis hacia ” configuracion avanzada” ( a la izda en la barra).
3. se te abrira otra ventana y a la derecha marcas “reglas de entrada” y seleccionas la casilla ” nueva regla”.
4. ahora seleccionas “puerto” y das a siguiente.
5. después te dará a elegir entre el puerto tcp o udp ( estos puertos debes conocerlos y saber cual tenes que abrir para seguir) y en “puertos locales específicos” pones el puerto que deseas abrir.
6. le das a “permitir la conexión” y seguis.
7. ahora tenes que elegir el modo en el que queres que se aplique la regla, en la mayoría de los casos debe de ser privado.
8. por último, das un nombre y descripción del puerto que has abierto.

Sin nada mas que agradecrles rotundamente me despido, voy a seguir urgueteando WebServices que me facino rotundamente

  • 0

#5 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 25 septiembre 2013 - 10:22

Hola

Una de las ventajas de usar un archivo externo (por ejemplo un .INI) es que si el servicio web cambia de ubicacion por cualquier razón, sólo cambias la url del INI y todo funciona sin tener que echar mano de recompilaciones.

Digo, soy muy flojo y busco la manera de trabajar lo menos posible :D :D :D

Saludos
  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 25 septiembre 2013 - 10:26

Ahora me he dado cuenta que estas usando C++, bueno, al final lo importante son los conceptos no el lenguaje (y)

Saludos
  • 0

#7 ginkaku

ginkaku

    Member

  • Miembros
  • PipPip
  • 12 mensajes

Escrito 25 septiembre 2013 - 02:28

ah si la prueba estaba echa en c++  *-), recien termine unos ABM hechos en delphi, sigo mas feliz que nunca. Como programo en 3 capas, aumentarle una capa mas para el Webservices no es nada, si puedo cuando termine podria subir un tuto de como implementar un ABM en 3 capas + la nueva capa Webservices  :).
No quiero comenzar un nuevo tema dentro de un mismo hilo pero ahora los hare los clientes en delphi XE5 mobile con android; leyendo en la comunidad ya pensabas talves hacer un tuto de esto no egostar? jeje perdona la insdiscrecion jeje creo q muchos estamos anciosos de ver algo asi. Comentare los resultados mas adelante esperado la ayuda de la comunidad como lo han estado haciendo mcuhas gracias.
  • 0

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 25 septiembre 2013 - 03:56

.......leyendo en la comunidad ya pensabas tal ves hacer un tuto de esto no egostar? jeje perdona la insdiscrecion jeje creo q muchos estamos anciosos de ver algo asi. Comentare los resultados mas adelante esperado la ayuda de la comunidad como lo han estado haciendo mcuhas gracias.


Estoy en eso :), aunque hay algunos detalles que no he podido solventar y no he podido atender por algunos asuntos urgentes que se han presentado.

Saludos
  • 0

#9 ginkaku

ginkaku

    Member

  • Miembros
  • PipPip
  • 12 mensajes

Escrito 25 septiembre 2013 - 06:29

Bueno al final del dia me complace decir que las pruebas fueron un exito!! Acabo de desarrollar una aplicación Cliente que consume Web Service en Delphi XE5 en android, usando Firemonkey Mobile Application. Siguiendo los pasos de tutoriales de "egostar", todo el procedimiento es el MISMO, esto se debe a la gran ventaje de XE5 de programar en delphi nuestras app android, sin llegar a hacer algun tipo de propaganda publicitaria, funciona perfectamente en mis dispositivos android. Actualmente hice un servicio de prueba de suma,resta,multiplicación y en android corre lo mas normal del mundo  (h) (h) (h). Me gustaria compartir imagenes o realizar un pequeño Tutorial (aunque por el momento no encontre la opcion de subir imagen o documento jejeje) pero vuelvo a recalcar que el procedimiento es el mismo explicado en tutos anteriores.
Lo unico nuevo que hice fue crear mi proyecto Firemonkey Mobile Application, con edits, botones, etc y posteriormente añadir un WSDL Importer, asignandole:
[html5]http://192.168.0.2:8850/Operaciones.dll/wsdl/IOperacion[/html5]
Tenga en cuenta que deben asignar el ip del servidor, intente con el nombre pero desde un dispositivo movil es necesario el ip. Y bueno asi funciona mi app cliente desde mi tablet y celular desde mi red LOCAL.
  • 0

#10 apicito

apicito

    Advanced Member

  • Miembros
  • PipPipPip
  • 104 mensajes

Escrito 26 septiembre 2013 - 01:32

ginkaku y egostar, gracias por la información.
Una pregunta: ¿Como implementais la seguridad?. Yo tengo algún web service utilizando https con contraseña que hice siguiendo un tutorial de Danysoft, pero me pregunto si podría implmentarse utilizando certificados digitales y si alguien ha probado esto.
y otra: ¿No sería mejor utilizar para esto servicios REST con datasnap. Yo no conozco DataSnap y no sé cuales son las ventajas y desvantajas entre uno y otro.
Un saludo.
  • 0

#11 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 26 septiembre 2013 - 08:47

ginkaku y egostar, gracias por la información.
Una pregunta: ¿Como implementais la seguridad?. Yo tengo algún web service utilizando https con contraseña que hice siguiendo un tutorial de Danysoft, pero me pregunto si podría implmentarse utilizando certificados digitales y si alguien ha probado esto.
y otra: ¿No sería mejor utilizar para esto servicios REST con datasnap. Yo no conozco DataSnap y no sé cuales son las ventajas y desvantajas entre uno y otro.
Un saludo.


Que tal apicito

Nunca he creado un webservice bajo https, pero no debe ser diferente, incluso nada tiene que ver el webservice ya que sólo se está añaddiendo la capacidad de seguridad de SSL / TLS para las comunicaciones HTTP estándar.

Puedes ver una comparativa entre SOAP y REST aquí

Saludos
  • 0

#12 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 26 septiembre 2013 - 09:37


Nunca he creado un webservice bajo https, pero no debe ser diferente, incluso nada tiene que ver el webservice ya que sólo se está añaddiendo la capacidad de seguridad de SSL / TLS para las comunicaciones HTTP estándar.


Has dicho bien amigo, recien acabo de liberar un desarrollo que corre bajo ssl y te confirmo que la seguridad no la implementa el recurso. La ecncriptación la hace el servidor y por tanto toda referencia que se haga a https hará que el servidor encripte todas las comunicaciones. :)
  • 0

#13 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 26 septiembre 2013 - 09:39

Bueno al final del dia me complace decir que las pruebas fueron un exito!! Acabo de desarrollar una aplicación Cliente que consume Web Service en Delphi XE5 en android, usando Firemonkey Mobile Application. Siguiendo los pasos de tutoriales de "egostar", todo el procedimiento es el MISMO, esto se debe a la gran ventaje de XE5 de programar en delphi nuestras app android, sin llegar a hacer algun tipo de propaganda publicitaria, funciona perfectamente en mis dispositivos android.


Que bien, un caso más de éxito que bien puede documentarse para futuras consultas (y)

Actualmente hice un servicio de prueba de suma,resta,multiplicación y en android corre lo mas normal del mundo  (h) (h) (h). Me gustaria compartir imagenes o realizar un pequeño Tutorial (aunque por el momento no encontre la opcion de subir imagen o documento jejeje) pero vuelvo a recalcar que el procedimiento es el mismo explicado en tutos anteriores.


Lamento ésta limitación, pero es una regla de seguridad que implementamos para evitar la inyección de código de parte de un usuario recién ingresado, pero llegando a 10 mensajes ya tendrás acceso. (y)

Lo unico nuevo que hice fue crear mi proyecto Firemonkey Mobile Application, con edits, botones, etc y posteriormente añadir un WSDL Importer, asignandole:
[html5]http://192.168.0.2:8850/Operaciones.dll/wsdl/IOperacion[/html5]
Tenga en cuenta que deben asignar el ip del servidor, intente con el nombre pero desde un dispositivo movil es necesario el ip. Y bueno asi funciona mi app cliente desde mi tablet y celular desde mi red LOCAL.


Un tip muy bueno, gracias (y)

Saludos
  • 0

#14 apicito

apicito

    Advanced Member

  • Miembros
  • PipPipPip
  • 104 mensajes

Escrito 26 septiembre 2013 - 11:00

Nunca he creado un webservice bajo https, pero no debe ser diferente, incluso nada tiene que ver el webservice ya que sólo se está añaddiendo la capacidad de seguridad de SSL / TLS para las comunicaciones HTTP estándar.

Gracias por constestar.
No me refería a https sino a la utilización de una clave de acceso como sistema de autentificación.
Mi pregunta es si alguien ha trabajado con certificados digitales en vez de contraseña en web services.
En lo que respecta a REST le hechare un vistazo al enlace que me pones pero me refería más a la utilización de datasnap, tecnología que desconozco, pero con la que entiendo que se accede directamente al servidor datasnap de acceso a datos y no a un servicio como seria el caso en SOAP.
Un saludo.
  • 0

#15 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 26 septiembre 2013 - 11:07


Nunca he creado un webservice bajo https, pero no debe ser diferente, incluso nada tiene que ver el webservice ya que sólo se está añaddiendo la capacidad de seguridad de SSL / TLS para las comunicaciones HTTP estándar.

Gracias por constestar.
No me refería a https sino a la utilización de una clave de acceso como sistema de autentificación.
Mi pregunta es si alguien ha trabajado con certificados digitales en vez de contraseña en web services.
En lo que respecta a REST le hechare un vistazo al enlace que me pones.
Un saludo.


Hola

Yo sólo he trabajado con autenticación a nivel del Header del SOAP, nunca con certificados.

Saludos
  • 0

#16 g_ferrada

g_ferrada

    Newbie

  • Miembros
  • Pip
  • 3 mensajes

Escrito 22 junio 2014 - 12:05

Estimado Egostar

Agradeceré de antemano si puedes ayudarme.
Tengo una aplicación cliente que se conecta a un webservice para entregar un archivo XML. Era la primera vez que lo hacía, así que en una primera etapa, después de mucho indagar por los foros y tras muchas (muchas) horas de prueba y error, lo logré utilizando HTTPRIO.

En la segunda etapa, el administrador ha cambiado de http a https, solicita usuario y clave en el header, y ha modificado la estructura del webservice. Ocurre que ya no fue posible lograrlo con HTTPRIO, seguramente hago algo mal, pero me aparece una ventana de windows que me pide la clave y usuario para el ws. Después de horas de indagar en la red, encontré un ejemplo que utiliza HTTPReqResp, en el cual, todo lo que hago es:



delphi
  1. var
  2.   HTTPReqResp: THTTPReqResp;
  3.   Stream: TMemoryStream;
  4.   XMLEnvio: WideString;
  5. begin
  6.   XMLDocument1.Active:= True;
  7.   XMLEnvio:= XMLDocument1.XML.Text;
  8.  
  9.   Stream := TMemoryStream.Create;
  10.   Stream.Clear;
  11.   HTTPReqResp := THTTPReqResp.Create(nil);
  12.   HTTPReqResp.InvokeOptions := [];
  13.   HTTPReqResp.Agent := 'Borland SOAP 1.2';
  14.   HTTPReqResp.URL := 'https://<url del webservice>';
  15.   //envias xmlEnvio y recibes un Stream:TMemoryStream
  16.   HTTPReqResp.Execute(xmlEnvio,Stream);
  17.   //Aquí tratas el stream
  18.   SetString(XMLEnvio, pchar(Stream.Memory), Stream.size);
  19.   MemoRespuesta.Lines.Add(#13#10 + FormatDateTime('dd-mm-yyyy hh:mm:ss',Now) + XMLEnvio);
  20.   //****************************
  21.   HTTPReqResp.Free;



Me pareció demasiado simple para ser verdad, pero lo cierto es que funcionó. El usuario y la clave están definidos en el XML. Con esto logro conectarme y recibir una respuesta apropiada a través del Stream (llevado a texto), la misma que recibo cuando pruebo el ws mediante SOAPUI... Con esto, ya estoy salvando mi pellejo.

Ahora bien, si pruebo enviando una clave incorrecta, en lugar de obtener el mensaje correspondiente via Stream, me aparece nuevamente la dichosa ventanita de windows, y, para peor, aun colocando los datos correctos, no me deja avanzar y vuelve a aparecer; la unica opción que queda es cancelar, con lo que aparece el mensaje:

Unauthorized (401) - 'https://<url del webservice>'

¿Sabes cómo puedo controlar el evento y mostrar mi propio mensaje evitando que aparezca la ventana de windows, o en su defecto, hacer que tome los valores que ingreso y completar la operación?

Y, tal vez algo más complicado... ¿Cómo es que HTTPReqResp me permite consumir el ws sin hacer referencia a ningun procedimiento ni función, como debe hacerse con HTPPRIO? De seguro que hago algo mal, pero me gustaría, si te interesa, revisar cuál sería la forma de hacerlo en HTPPRIO.
Cualquier información que necesites, solo indícalo.

Saludos y gracias.

  • 0

#17 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 23 junio 2014 - 04:31

Que tal, ¿tu hiciste el Servicio Web (Servidor) ?

Si es así necesitas agregar un evento que obtenga los datos del encabezado y actúes en consecuencia regresando algún mensaje.

Algo así



delphi
  1. function ChecaUsuarioPassw(const encabezado: THeaderSecurity): wideString;
  2. var
  3.   vEncabezado: THeaderSecurity;
  4. begin
  5.   vEncabezado := THeaderSecurity.create;
  6.   vEncabezado := encabezado;
  7.  
  8.   if ValidaUsuario(vEncabezado.Usuario, vEncabezado.Passw) then
  9.   begin
  10.     result := 'Bienvenido';
  11.   end
  12.   else begin
  13.         result := 'Usuario o Contraseña incorrecta';
  14.   end;
  15. end;



Obviamente debes crear la función para validar el usuario ya sea que utilices alguna base de datos o datos fijos, asimismo debes de declarar la función ChecaUsuarioPassw() en la unidad de Interface. Asumo que creaste una clase donde incluiste los valores para el usuario y la contraseña mas o menos como lo estoy haciendo yo.

Si puedes proporcionarme la url de tu webService te podría ayudar mejor, claro, si eso fuese posible.

Saludos
  • 0

#18 g_ferrada

g_ferrada

    Newbie

  • Miembros
  • Pip
  • 3 mensajes

Escrito 24 junio 2014 - 08:04

Egostar,
El webservice no lo construí yo, y tampoco tengo atribuciones sobre él. Sin embargo, cuando consumo el XML mediante SOAPUI, con una clave incorrecta en el header, sí recibo un mensaje apropiado (por SOAPUI). El tema es que cuando lo hago a través de mi aplicación cliente, ocurre lo que te explicaba en el post anterior (la ventana de windows, que me pide usuario y clave). Ni siquiera se disparan los eventos OnBeforePost, OnPostingData, OnReceivingData ni WSDLView (éste último ni siquiera imagino para qué sirve), estos eventos se disparan sólo una vez que logra la conexión (con usuario y clave correctos en el header del xml). A continuación copio el código que devuelve (por SOAPUI) el webservice ; el primer párrafo corresponde a la respuesta utilizando clave correcta, el segundo utilizando clave incorrecta.



delphi
  1. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  2.   <soapenv:Header>
  3.       <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
  4.         <wsu:Timestamp wsu:Id="Timestamp-257" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
  5.             <wsu:Created>2014-06-24T13:36:23.188Z</wsu:Created>
  6.             <wsu:Expires>2014-06-24T13:41:23.188Z</wsu:Expires>
  7.         </wsu:Timestamp>
  8.       </wsse:Security>
  9.   </soapenv:Header>
  10.   <soapenv:Body>
  11.       <Returns xmlns="http://www.intellego.com/sernapesca/">
  12.         <Codigo>0</Codigo>
  13.         <Descripcion>Recibido OK</Descripcion>
  14.       </Returns>
  15.   </soapenv:Body>
  16. </soapenv:Envelope>
  17.  
  18.  
  19. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  20.   <soapenv:Header>
  21.       <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
  22.         <wsu:Timestamp wsu:Id="Timestamp-256" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
  23.             <wsu:Created>2014-06-24T13:35:49.012Z</wsu:Created>
  24.             <wsu:Expires>2014-06-24T13:40:49.012Z</wsu:Expires>
  25.         </wsu:Timestamp>
  26.       </wsse:Security>
  27.   </soapenv:Header>
  28.   <soapenv:Body>
  29.       <soapenv:Fault xmlns:axis2ns72="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
  30.         <faultcode>axis2ns72:FailedAuthentication</faultcode>
  31.         <faultstring>The security token could not be authenticated or authorized; nested exception is:
  32. javax.security.auth.callback.UnsupportedCallbackException: Check failed : System error</faultstring>
  33.         <detail/>
  34.       </soapenv:Fault>
  35.   </soapenv:Body>
  36. </soapenv:Envelope>



Cuando uso clave correcta desde mi aplicación cliente, puedo manipular el contenido del mensaje que recibo desde el ws, pero con la clave incorrecta no alcanzo a llegar a ese punto. La URL del ws es:

https://pess.sernape...esembarque?wsdl

No sé si ahora expliqué mejor mi problema.
Si alguien puede darme cualquier sugerencia, se agradecerá.


  • 0

#19 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 24 junio 2014 - 09:39

Hola

Ya entendí el problema, ahora veré que es lo que hace enviando datos incorrectos y te comento los resultados, lo podré hacer en casa, por ahora estoy en el trabajo y no me es posible.

Saludos
  • 0




IP.Board spam blocked by CleanTalk.