![]() |
Recibir respuesta de un servidor
Buenas..
Tengo un servidor externo en el que en su carpeta "ftp" hay un listado de nombres. Desde mi aplicación el usuario comprobará si su nombre figura en la lista, este paso lo hago accediendo desde la aplicación a a un archivo php que comprueba si el nombre existe o NO. Mi intención es que una vez una vez obtenido el resultado (si/no) este sea enviado desde el servidor a la aplicacion (¿es posible?). Una solución que se me ocurre es guardar el resultado en el servidor, desde la Aplicacion volver a conectar con el servidor despues de un tiempo "prudencial" y obtener el resultado; a esta solución le veo el inconveniente de que accedo al servidor por segunda vez sin saber si el algoritmo PHP ya ha hecho la comprobación. Gracias. |
Es una pregunta muy genérica, danos más detalles.
|
Hola a todos,
En efecto, probablemente, hagan falta más detalles. Tratando de responder a tu pregunta en concreto, cuando tú "llamas" al archivo PHP de tu servidor, este ya te ofrece una respuesta, precisamente, a tu "llamada". Es decir, con un componente "IdHttp", por ejemplo, realizas una petición HTTP al servidor sobre el archivo PHP que necesites. En dicho archivo compruebas si el nombre del usuario está en la lista (este nombre se lo has podido mandar tú desde tu programa al servidor, como un argumento de la petición HTTP, sea GET, sea POST), y, acto seguido, desde el mismo "script" PHP, ya puedes proporcionar una respuesta a la app, que puede ser un texto tal que "existe", o "no-existe", por ejemplo. Tu programa sabrá qué hacer a partir de cualquier de estas respuestas... |
Hola de nuevo a todos,
Aquí lo que podría ser un ejemplo de lo que digo en mi anterior post:
Creo que más o menos se entiende... al menos eso creo yo. :) |
Buenas.
Muchas gracias por contestar , efectivamente quiza deberia haber dado mas detalles: la llamada al archivo php la hago de la forma: Código:
HINTERNET sesion = InternetOpen("agent",INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL,0); Voy aprobar con los comppnentes indy... Ahora la duda es cual es la orden que debo de implementar en mi scrip php para que me devuelva el valor "esta" o "no esta" Gracias Otra Vez. |
Hola a todos,
Ostras... no me dí cuenta de que estábamos hablando de C++ Builder y no de Delphi... pido disculpas. No sé lo que te costaría adaptar el código anterior... supongo que no demasiado, contando además con que los componentes Indy están disponibles, si no me equivoco, en C++ Builder. Aquí parece que pueden ayudarte también a obtener la respuesta del servidor haciendo uso de HINTERNET... Por otro lado, no sé si se entiende muy bien lo que dices de que no estás seguro del "orden" en el "script" PHP... el "script" será ejecutado cuando realices la petición, y, ya depende del mismo qué respuesta ofrecer, pero, sería tan "sencillo" como esto: Código PHP:
|
Gracias otra vez
Efectivamente trabajo en c++ builder pero tengo indy9 y los componentes que mencionas deben de estar contenidos en Indy 10. voy a intentarlo utilizando HINTERNET (gracias por el hipervinculo) Entiendo que al usar el comando echo en el script php, este enviara el valor obtenido como respuesta (estoy pez en php). Muchisimas Gracias por tu tiempo |
Hola a todos,
Cita:
Código PHP:
|
Buenas..
Sigo dandole vueltas a poder recibir una respuesta desde un php a mi aplicacion cb6... El codigo PHP funciona correctamnete Código PHP:
En principio devolveria como respuesta el booleano Esta:confused:. El codigo en c++ para llamar al scrip y en teoria recibir la respuesta seria.. Código:
Ya que obviamente estoy equivocado alguien me puede orientar... Gracias |
Hola a todos,
Ojo con los tipos... si pruebas "echo true;" verás que lo que obtienes es un "1". Y es un "1", es decir, una cadena, no un entero. Por otro lado, si pruebas un "echo false;", verás que no obtienes nada... ni siquiera "0"... Quizás debas tener en cuenta todo esto... |
Gracias por contestar
Entiendo con tu respuesta que el codigo "Post" y "Get" con hinternet es correcto, donde tengo el problema es a la hora de "valorar" la respuesta obtenida en Buffer ... |
Hola a todos,
Cita:
|
Gracias por contestar,..
He modificado el codigo php de la siguiente manera Código PHP:
Código:
char Buffer; //MODIFICADO ,¿Que estoy haciendo mal? Gracias |
Recuerda que tienes la opción de integrar código mediante las etiquetas, también para php, no es necesario que pierdas el tiempo poniendo colores y demás.
![]() |
Yo creo que hay algo que no funciona como esperas y hay un error en alguna parte. Por eso, yo haría lo siguiente:
Primero, revisaría la configuración del servidor para asegurarme de que devuelve todos los errores que se puedan producir. Es decir, lo pondría en modo pruebas. Que no ignore absolutamente nada. Ojo, que PHP es muy puñetero y la gestión de los errores está repartida en unas cuantas variables, y si no todas están bien asignadas habrá cosas que no verás. Asegúrate, también, de que no cambias alguna de estas variables en tiempo de ejecución. Si no lo has hecho ya, lee todo esto. Luego cambiaría el código del cliente para que muestre todo lo que devuelva el servidor, sin dejar ni un octeto. Supongo que InternetReadFile es capaz de indicar si ha quedado algo en la caché. Pues eso, que llene un TMemo o un archivo de disco con lo que reciba, tal cual. Cuidado con los caracteres de control (saltos de línea, tabuladores, etc.). También guardaría la información de cabecera, porque puede dar información invisible pero útil, como la codificación de caracteres, la URI auténtica, variables GET y POST, huellas (cookies),... A partir de ahí ya se verá lo que se hace. |
Buenas...
Gracias por contestar a todos... dec estabas en lo cierto , realmente echo $Esta devuelve una cadena, el error lo cometia yo al no leerla completamente mediante un while. Código:
while (InternetReadFile(handle,&Buffer,sizeof(Buffer),&BytesRead)) Gracias otra vez. |
La franja horaria es GMT +2. Ahora son las 13:06:33. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi