Page 1 of 1

Intercambio de datos entre PC y dispositivo Android en la m

PostPosted: Tue Feb 20, 2024 10:27 pm
by Arturo Lopesoria
ASUNTO: Intercambio de datos entre PC y dispositivo Android en la misma red local vía WiFi.

Hola a todos.
Soy usuario de FWPPC pero ahora he venido dando pequeños brincos hacia a Android.

Utilizo el servidor uhttpd.exe
( v.0.4.4 FIXED_THREADS de (c)2009 de Francesco Saverio Giudice )
Me FUNCIONABA muy bien cuando lo usaba para generar el HTML al Cliente, sirviendome como un sencillo y fácil Front-End y Back-End.

AHORA EL RETO ES DIFERENTE. La NECESIDAD AHORA es:

1.- El Front-End debe estar separado del Back-End. No requiero que el modulo PRG-CGI del lado servidor genere nada del front-End (HTML), de eso se encargará el Cliente.

2.- No requiero SSL ni MultiThreads ya que es una web local TRIVIAL entre una PC y uno o dos Dispositivos Android.

3.- El Cliente y el servidor deberan poder comunicarse vía $Ajax, HttpRequest, Fetch-Api o tal vez WebSocket?

AUN SIGO INTENTANDO CON UHTTPD

A.- Para el lado SERVIDOR BACK-END (Módulo CGI) uso un prg compilado como cgi, por ahora muy simple y sencillo, cofigurado para recibir peticiones y responder a las solicitudes. Lee el Request y acorde a ello genera Las respuestas que son datos procedentes de tablas .dbf, que reciden en la PC y en ese punto el programa prg de manera hard-coded abre tablas, y genera respuestas ya sea en formato array, json o hash, lo que resulte más compatible con el escenario.

B.- Del lado CLIENTE FRONT-END Uso una APP html-javascript-jQuery encapsulada mediante CORDOVA para correr en un webview de ANDROID. Esto es, se encarga de generar todo el HTML para la interfaz de usuario.
Para ello me basé y adapté ideas de JMG. (Roberto)

SITUACION ACTUAL:

No he logrado la comunicación, mi primer aproach el más sencillo, hago una petición $Ajax del lado Cliente y el servidor la recibe, pero al generar la respuesta viola las normas CORS, generando el error:

Access to XMLHttpRequest at 'http://192.168.1.110/cgi-bin/menu_jmg.hrb?qry=ASKING_SIMPLE_TEXT'
from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Lo que significa que no encuentra los encabezados apropiados del lado SERVIDOR uhttpd/Modulo CGI

PROBLEMA:

Requiero poder cambiar los encabezados ya sea en el módulo CGI o tal vez en el uhttpd.
No encuentro cómo lograr hacer que uhttpd pueda responder de otra manera que no sea HTML y lograr meter el encabezado "Access-Control-Allow-Origin *"
Siempre responde con unos encabezados fijos por default.

Tampoco he logrado compilar el uhttpd que se incluye en:
harbour\core\extras\httpsrv y tal vez desde ahí utilizar las funciones de insertar encabezados que veo eln los fuentes. Pero aún ni siquiera sé si voy bien por ese camino.
Lograr que uhttpd responda de alguna manera compatible con la comunicación compatible tipo $Ajax, HttpRequest() o Fetch-API.

Tampoco me animo a usar Mod-Harbour para esto. Porqué?
- No he visto cómo hacer para utilizar .HRBs en lugar de .PRGs desde Mod-Harbour
- Me result DEMASIADO ROBUSTO para una necesidad tan simple.

Alguna idea o sugerencia para este pequeño escenario de:

Intercambio de datos entre PC y dispositivo Android en la misma red local vía WiFi. ?

Re: Intercambio de datos entre PC y dispositivo Android en la m

PostPosted: Wed Feb 21, 2024 6:22 am
by Carles
Bon dia,

Si usas httpd creo recordar que habia la funcion UAddHeader(). Puedes probar antes de generar la salida -> UAddHeader( "Access-Control-Allow-Origin", "*" )

Si no usas ssl te pueden facilmente leer el contenido.

Tu escenario es el tipico de uso de webservices. Tampoco autenticas la comunicacion ?

Por muy sencillo que planteas lo que quieres, hay muchos puntos a tocar en este tipo de escenarios


Saludos.
C.

Re: Intercambio de datos entre PC y dispositivo Android en la m

PostPosted: Wed Feb 21, 2024 2:22 pm
by Lautaro
Estimado,

¿ En el CGI como generas las respuestas ? , ¿ usas la clase TIPCGI ? , si es asi, usa el metodo : :header( "Access-Control-Allow-Origin: * " )

Saludos

Lautaro Moreira