PDA

Ver la Versión Completa : HTTPRIO y el Registry ¿unica opción?


kaopectate
23-10-2007, 17:18:23
Hola a todos.

Tengo una aplicación de Web Services (SOAP) que hace uso (en el cliente) de un componente HTTPRIO.

Como parte de la implementación SOAP de Delphi, tengo un archivo dende se define la interfase (funciones y tipos que estan disponibles en el server y que pudieran ser consultados en el cliente). Pues bien, esta interfase, se registra automáticamente en el registry de Windows al hacer uso de ella.

Mi problema es que me toca instalar el cliente en una compañía que tiene bloqueado el acceso al registry para el usuario que me han asignado.

Pregunta: ¿Existe alguna otra alternativa para implementar un cliente SOAP en Delphi? o mejor aún, ¿Existe alguna manera de hacer que la implementación SOAP de Delphi me permita no hacer uso del registry?

Gracias de antemano.

courtois
03-11-2007, 05:32:06
Es necesario registrar la clase antes de usarse, pero el problema no es tu aplicacion sino la restriccion en la maquina, como regla general, las instalaciones se hacen como administrador no como usuario restringido.

kaopectate
05-11-2007, 15:57:29
Gracias por contestar, courtois.

En efecto es como dices, mi pregunta en realidad era si habia alguna implementación alternativa.

Sin embargo, pudimos detectar que el problema no estaba en el acceso al registry sino en los permisos del Data Execution Prevention (DEP) del Windows.

Es decir, el proceso de registro funcionaba bien pero el S.O. bloqueaba el acceso al Web Service produciendo un error interno en mi aplicación cliente.

Dejo este link por si a alguien le ocurre algo similar:

http://support.microsoft.com/kb/875352

Gracias de nuevo.

LauraAS
08-11-2007, 16:27:11
Yo he implementado algún que otro cliente de WebServices utilizando el componente HTTPReqResp de la paleta WebServices.


var
HTTPReqResp: THTTPReqResp;
Stream: TMemoryStream;
XMLEnvio: WideString;
begin
Stream := TMemoryStream.Create;
Stream.Clear;
HTTPReqResp := THTTPReqResp.Create(nil);
HTTPReqResp.InvokeOptions := [];
HTTPReqResp.Agent := 'Borland SOAP 1.2';
HTTPReqResp.URL := urlWebServices
//envias xmlEnvio y recibes un Stream:TMemoryStream
HTTPReqResp.Execute(xmlEnvio,Stream)
//Aquí tratas el stream
//****************************
HTTPReqResp.Free;
end;

kaopectate
08-11-2007, 16:38:51
Gracias LauraAS

Lo voy a probar, es una buena alternativa.

Saludos.

william z
08-11-2007, 17:21:35
Saludos al Foro. Hola LauraAS, he leido tu post, tu implementacion con el componente HTTPReqResp es directo lo que necesito, pero tengo algunas dudas : la variable xmlenvio contiene un xml especificacion. por ejemplo: 96581 gast Recherche127 y all ejecutar el metodo execute devuelve en Stream algun valor, por ejemplo: PCBISKNO@test1@5D09393B3E3E40414243444B464C484F4A4F4F5C4E555360556354655668586C5B605D5E5F5E616F6369 1.7.3.3.3.0 es correcto como lo veo, mi pregunta como hago el tratamiento del Stream. necesito algo parecido a http://www.soapui.org/ gracias un saludo desde Germany William