Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-03-2011
comba comba is offline
Miembro
 
Registrado: feb 2004
Posts: 89
Poder: 21
comba Va por buen camino
webservice con Sesion

Hola estoy utilizando delphi2007 y tengo que consumir 2 webservices.
Hasta hay no hay problema.

El 1º no hay problema ya que conecta perfectamente. Paso unos parametros y este me devuelve otros.

El 2º es donde viene el problema ya que para utilizarlo tengo que utilizar una variable del 1º que es la sesion.
Pero cuando voy a consumir el 2º webservices no tengo una variable session me dicen que tengo que utilizar esta clase

ROClientIDHeader = class(TSOAPHeader)
private
FID: WideString;
FID_Specified: boolean;
procedure SetID(Index: Integer; const AWideString: WideString);
function ID_Specified(Index: Integer): boolean;
published
property ID: WideString Index (IS_OPTN) read FID write SetID stored ID_Specified;
end;

También me dicen que construya el webservice y que pase la sesion a la propiedad id.

La verdad es que hay es donde me pierdo.
Alguien me pueda orientar un poquito.

Muchas gracias.
Responder Con Cita
  #2  
Antiguo 02-03-2011
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
El tema de las sesiones es complicado. ¿Están los dos servicios en el mismo dominio? Porque normalmente las sesiones se asocian a un único dominio para evitar suplantaciones.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 02-03-2011
comba comba is offline
Miembro
 
Registrado: feb 2004
Posts: 89
Poder: 21
comba Va por buen camino
Efectivamente los 2 estan en el mismo dominio.
Responder Con Cita
  #4  
Antiguo 03-03-2011
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Disculpa si peco de condescendiente pero, sabes lo que es una "sesión", ¿verdad? Lo digo porque acabo de releer tu primer mensaje y la sentencia "que construya el webservice y que pase la sesión a la propiedad id" no tiene mucha sentido para mi.

En web se trabaja por peticiones, es decir, un cliente hace una petición y el servidor responde a dicha petición. En principio el servidor maneja cada petición de forma independiente; los datos generados en una petición no están disponibles en la siguiente. En ocasiones es conveniente que algunos datos "permanezcan" entre petición y petición, y ahí entran las sesiones.

Si la sesión es gestionada por el servidor, primero el cliente pide al servidor un identificador de sesión, entonces el servidor crea una "sesión persistente", la identifica y devuelve el identificador. A partir de ese momento el cliente incluye ese identificador en las peticiones de forma que el servidor "sepa" que puede/debe utilizar los datos de dicha sesión.

Hay sesiones que son gestionadas por el cliente, en cuyo caso los datos se almacenan en el lado cliente, por ejemplo usando huellas (cookies). Ahora el cliente debe incluir toda la información almacenada en la sesión en cada petición.

Normalmente las sesiones no sólo llevan asociadas un identificador sino también la dirección IP del cliente y una caducidad. De esta forma han de coincidir ambos valores (identificador e IP) para poder acceder a la misma. Y también, si durante un tiempo no se hace ninguna petición la sesión se destruye.

Nunca he usado SOAP, pero por lo poco que sé lleva implícito la gestión de sesiones. Supongo que a lo que se refiere con la frase que he citado al principio es que obtengas el identificador de la sesión SOAP del primer servicio y se la pases al segundo servicio, pero no tengo nada claro que esto sirva de algo puesto que cada servicio usará su propio espacio de trabajo. Lo más probable es que debas crear tu propio sistema de sesiones (con la información que te he dado no debería costarte mucho imaginar cómo hacerlo).
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #5  
Antiguo 11-12-2020
Quim Herrera Quim Herrera is offline
Miembro
 
Registrado: may 2004
Posts: 33
Poder: 0
Quim Herrera Va por buen camino
Tengo el mismo problema al consumir un webservice de una empresa de transportes. Llamas al primer webservice para identificarte y te devuelve un id que debes mandar al segundo website dentro del <header> junto con los datos para dar de alta el envio.
He importado los wsdl con delphi tokyo y la cabecera está allí:
Código Delphi [-]
  ROClientIDHeader     = class;  
  .....
  
  // ************************************************************************ //
  // XML       : ROClientIDHeader, global, 
  // Namespace : http://tempuri.org/
  // Info      : Header
  // ************************************************************************ //
  ROClientIDHeader = class(TSOAPHeader)
  private
    FID: string;
    FID_Specified: boolean;
    procedure SetID(Index: Integer; const Astring: string);
    function  ID_Specified(Index: Integer): boolean;
  published
    property ID: string  Index (IS_OPTN) read FID write SetID stored ID_Specified;
  end;
  .....
  
  
procedure ROClientIDHeader.SetID(Index: Integer; const Astring: string);
begin
  FID := Astring;
  FID_Specified := True;
end;

function ROClientIDHeader.ID_Specified(Index: Integer): boolean;
begin
  Result := FID_Specified;
end;

...
  InvRegistry.RegisterHeaderClass(TypeInfo(WebServService), ROClientIDHeader, 'ROClientID', 'http://tempuri.org/');

Pero no sé como incluirla en el xml al hacer el envio.

Se está enviando:

Código:
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<SOAP-ENV:Body>
		<WebServService___GrabaEnvio19 xmlns="http://tempuri.org/">
			<strCodAgeCargo>099999</strCodAgeCargo>
			<strCodAgeOri>099999</strCodAgeOri>
	...
			<strCodPuntoConveniencia/>
		</WebServService___GrabaEnvio19>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
y deberia enviarlo con la cabecera:

Código:
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<soap:Header>
		<ROClientIDHeader xmlns="http://tempuri.org/">
			<ID>{--idSesion--}</ID>
		</ROClientIDHeader>
	</soap:Header>
	<SOAP-ENV:Body>
		<WebServService___GrabaEnvio19 xmlns="http://tempuri.org/">
			<strCodAgeCargo>099999</strCodAgeCargo>
			<strCodAgeOri>099999</strCodAgeOri>
	...
			<strCodPuntoConveniencia/>
		</WebServService___GrabaEnvio19>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
¿ Alguien puede ayudarme a incluir la cabecera en el XML ?

Muchas gracias

Última edición por Quim Herrera fecha: 11-12-2020 a las 10:31:01.
Responder Con Cita
  #6  
Antiguo 11-12-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Deberías crear un hilo nuevo, y pon un título descriptivo.
Aquí sólo van a ver tu pregunta quienes han participado en este hilo.
Responder Con Cita
  #7  
Antiguo 11-12-2020
Quim Herrera Quim Herrera is offline
Miembro
 
Registrado: may 2004
Posts: 33
Poder: 0
Quim Herrera Va por buen camino
Hola Casimiro,
Ya he creado el nuevo.
Gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Arquitectura WebService juanmdq Internet 1 12-04-2011 00:07:21
WebService y D4 Nose Internet 1 02-08-2005 22:18:23
WEBSERVICE y DELPHI Lester Varios 4 05-03-2005 00:09:08
WebService en Delphi Rafa Internet 7 10-06-2004 09:30:06


La franja horaria es GMT +2. Ahora son las 20:46:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi