Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Llamar a un servicio via web (https://www.clubdelphi.com/foros/showthread.php?t=79289)

AzidRain 22-06-2012 01:44:48

Llamar a un servicio via web
 
Tengo el siguiente proyecto:

Entrar a una pagina web, escribir un par de datos (a y b)
La página web, que sería un script PHP, manda esos datos a y b a un programa delphi en forma de servicio común y corriente.
El servicio usa esos 2 datos para acceder a sendos archivos almacenados en ese mismo servidor y los envía como respuesta
La página web descarga a la pc del usuario los archivos recibidos.
Tabién podría ser que el servicio envie por correo electronico los mentados archivos.

No soy experto ni en PHP ni servicios, pero sospecho que lo que requiero hacer es algo trivial y que muy seguramente haya por ahí algún programa o componente que ya lo haga pero lo desconozco. De entrada me huele a hilos de ejecución ya que puede haber n solicitudes a la vez y bueno mientras mas le busco mas me empiezo a complicar.

También pudiera ser que el propio script PHP busque los archivos y los descargue directamente lo cual se me hace más sencillo.

Sería algo como:

* Recibo a y b
* Lo traduzco al nombre de los archivos que a y b representan
* Verifico si hay un archivo que corresponda
Si lo hay Lo descargo al usuario
* Si no, mando mensaje y regreso a pedir datos.

Pregunto para no meterme en honduras tratando de inventar el hilo negro

Se aceptan sugerencias o pedazos de código que me den un nortecillo para seguirle.

movorack 22-06-2012 16:18:59

Hace un tiempo hice algo parecido con D7 + PHP.

Debia conectarme a unos servicios web construidos en .Net para descargar información de personas, vehiculos y estadisticas y para registrar en otro sistema movimientos de esas mismas personas y vehiculos.

Al principio intenté llamarlos directamente con delphi 7 (Importar WSDL) pero me encontré con problemas para manejar los datos que estaba enviando este. Entonces cree una serie de servicios en PHP con NUSOAP donde pasaba parametros mucho mas simplpes.

Los servicios intermedios en PHP eran los que se encargaban realmente de consumir los servicios .Net, procesar la información y registrar en la DB. Al finalizar enviaban una señal por red "diciendole" al cliente el resultado de la operación y si era necesario un ID para continuar con el proceso en el cliente.

Creo que esto es lo que podrías hacer y tengo algunas líneas de código con las que te podría colaborar mas que todo para la construcción de los servicios PHP con NUSOAP.

Saludos.

mamcx 22-06-2012 18:03:16

Algo que no entiendo es el asunto de cuanto demora el proceso. Es algo largo? O es secuencial?

Osea, me pregunto si realmente estas hablando de un Queue y no en un proceso directo.

La mayoria de los procesos en un servidor web se resuelven con una sola llamada GET (como listar una tabla), pero si hay un workflow en el medio y hay proceso largos que puedan bloquear el servidor es mejor pensar en otra cosa.

La idea es que si algo se puede demorar minutos es mejor tirarlo como algo asincronico/queue.

Si tienes acceso directo al PHP y lo puedes modificar quizas sea mejor directamente hacer todo el proceso alli, a menos que haya una razon para tenerlo distribuido.

AzidRain 22-06-2012 20:21:07

Asi es mamcx, si tengo acceso al PHP y se me antoja mas hacer todo el proceso ahi mismo. El proceso en si es muy simple, el usuario escribe un numero de factura y un id unico para esa factura. Luego mediante PHP se valida en una BD que ese numero de factura en efecto corresponda con el id, en caso de que sea correcto procede a descargar el archivo que corresponde. Ahi es donde estoy un poco líado.

mamcx 22-06-2012 21:14:36

Ah tonces muy facil.

La parte que te da dificultad es como decir "descarga este archivo"?


Lo mas simple:
http://stackoverflow.com/questions/2...-for-json-file

Cubriendo caracteristicas extras, como permitir resumir la descarga

http://stackoverflow.com/questions/3...file-downloads

Y con soporte a gzip:

http://stackoverflow.com/questions/8...a-gzipped-file

Pero es MUCHO mejor si en vez de hacer la descarga por PHP, la hacer por el servidor web - si es solo mandarlo, en vez de generarlo por codigo-:

http://www.jasny.net/articles/how-i-php-x-sendfile/

http://www.yiiframework.com/wiki/129...-applications/

AzidRain 23-06-2012 00:02:18

Excelente mamcx, con eso ya tengo para armarlo, ahi cualquier duda continuo el hilo y lo que vaya logrando lo voy posteando para que les sirva a los demás.


La franja horaria es GMT +2. Ahora son las 19:32:25.

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