Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Delphi para la web
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-04-2018
dosher81 dosher81 is offline
Registrado
 
Registrado: Apr 2018
Posts: 6
Poder: 0
dosher81 Va por buen camino
Red face Enviar datos a PHP y leer resultados (pagina ajena)

Buenas a todos,

pues aunque ponga que soy nuevo la verdad es que sigo esta pagina desde hace mil años y ha sido mi principal base para solucionar mis problemas siempre pero esta vez no encuentro por donde seguir.

Estoy desarrollando una aplicación de autoescuelas y necesito consultar el resultado de los alumnos contra la pagina de trafico, para ellos tengo que enviarle una serie de datos, pulsar en enviar y obtener el resultado.

sinceramente no tengo ni idea de como puedo realizar esto desde delphi.

¿alguna idea?

gracias!!!
Responder Con Cita
  #2  
Antiguo 08-04-2018
Avatar de dec
dec dec is offline
Moderador
 
Registrado: Dec 2004
Ubicación: Alcobendas, Madrid, España
Posts: 12.630
Poder: 27
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Puedes utilizar el componente "IdHttp" que viene con los componentes Indy, seguramente, incluido ya en tu Delphi. El componente "IdHttp" implementa un cliente HTTP, con el que podrás hacer peticiones GET y POST a las URL de los scripts PHP que necesites, enviando valores y recibiendo la correspondiente respuesta del servidor. Si buscas por "IdHttp Indy Delphi" encontrarás más información.
__________________
David Esperalta
www.davidesperalta.com
Responder Con Cita
  #3  
Antiguo 09-04-2018
dosher81 dosher81 is offline
Registrado
 
Registrado: Apr 2018
Posts: 6
Poder: 0
dosher81 Va por buen camino
Mil Gracias! voy a probarlo
Responder Con Cita
  #4  
Antiguo 10-04-2018
dosher81 dosher81 is offline
Registrado
 
Registrado: Apr 2018
Posts: 6
Poder: 0
dosher81 Va por buen camino
sigo con la locura, no hay forma de hacerlo funcionar.

el problema es que la pagina web donde quiero acceder es https, con lo que tengo que utilizar ssl y aqui choco contra una pared con la que ya chocaron compañeros del foro y con la que no he encontrado solución hasta la fecha.

pongo algo de código:

Código Delphi [-]
uses: IdMultipartFormData,IdSSLOpenSSL;

procedure Tfautoescuela.FormCreate(Sender: TObject);
var
IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
begin
///
 IdSSLIOHandlerSocketOpenSSL1 := TIdSSLIOHandlerSocketOpenSSL.Create(self);
  with idSSLIOHandlerSocketOpenSSL1 do
    begin
      SSLOptions.Method := sslvSSLv2;
      SSLOptions.Mode := sslmUnassigned;
      SSLOptions.VerifyMode := [];
      SSLOptions.VerifyDepth := 0;
      //host := '';
    end;
   IdHTTP1 := TIdHTTP.Create(Self);
  with IdHTTP1 do
    begin
      IOHandler := IdSSLIOHandlerSocketOpenSSL1;
      AllowCookies := True;
      ProxyParams.BasicAuthentication := False;
      ProxyParams.ProxyPort := 0;
      Request.ContentLength := -1;
      Request.ContentRangeEnd := 0;
      Request.ContentRangeStart := 0;
      Request.Accept := 'text/html, */*';
      Request.BasicAuthentication := False;
      Request.UserAgent := 'Mozilla/3.0 (compatible; Indy Library)';
      HTTPOptions := [hoForceEncodeParams];
    end;
End;

procedure Tfautoescuela.Button1Click(Sender: TObject);
var S: TStringList;
   M: TStream;
begin
 S := TStringList.Create;
 M := TMemoryStream.Create;
 try
   S.Values['nif'] := '455654654S';
   S.Values['fecha-exa'] := '04/01/2018';
   S.Values['tipo-exa'] := 'B';
   S.Values['fecha-nac'] := '18/02/1975';

   IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
   IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
   IdHTTP1.Post('https://aegranvia.es/resultados', S, M);
   Memo1.Lines.Add(Format('Response Code: %d', [IdHTTP1.ResponseCode]));
   Memo1.Lines.Add(Format('Response Text: %s', [IdHTTP1.ResponseText]));

   M.Position := 0;
   S.LoadFromStream(M);
   Memo1.Lines.AddStrings(S);
 finally
   S.Free;
   M.Free;
 end;

el problema es que TIdSSLIOHandlerSocketOpenSSL me dice undeclared identifier.

ya actualicé a indy10, he descarado las dll y sinceramente no se que mas le puedo hacer

¿se os ocurre algo?

mil gracias!!

Última edición por dec fecha: 10-04-2018 a las 08:23:28. Razón: Poner etiqueta DELPHI
Responder Con Cita
  #5  
Antiguo 10-04-2018
Avatar de dec
dec dec is offline
Moderador
 
Registrado: Dec 2004
Ubicación: Alcobendas, Madrid, España
Posts: 12.630
Poder: 27
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

La clase "TIdSSLIOHandlerSocketOpenSSL" se declara en la unidad "IdSSLOpenSSL.pas".
__________________
David Esperalta
www.davidesperalta.com
Responder Con Cita
  #6  
Antiguo 10-04-2018
dosher81 dosher81 is offline
Registrado
 
Registrado: Apr 2018
Posts: 6
Poder: 0
dosher81 Va por buen camino
Cita:
La clase "TIdSSLIOHandlerSocketOpenSSL" se declara en la unidad "IdSSLOpenSSL.pas".
Gracias! Solucionado

le añadí ademas las dll´s necesarias para que funcionara y funcionó pero ahora tengo otro problema.

Ya me devuelve datos, el problema es que no ejecuta el php, simplemente me devuelve el código de la pagina pero la "ejecuta" o pulsa el boton buscar.

estoy atascado porque estoy muy muy verde en este tema y cuando mas leo mas me lio

¿alguna idea de porque no estará ejecutando?

gracias!
Responder Con Cita
  #7  
Antiguo 10-04-2018
bucanero bucanero is offline
Miembro
 
Registrado: Nov 2013
Ubicación: Almería, España
Posts: 111
Poder: 5
bucanero Va por buen camino
Hola Dosher81

quizás el problema viene del hecho de que estas lanzando los datos contra la misma URL que te los envía a ti, pero en realidad el formulario dentro de esa pagina HTML los envía a otra dirección distinta cuando pulsas sobre el botón enviar "../php/obtener-notas.php" . Prueba a enviarlos a esa nueva dirección. Por otra parte no añades el parámetro submit del propio formulario, y dependiendo de la validación es posible que lo tengas que insertar también.

Código:
<form name="form-resultados" id="form-resultados-id" action="../php/obtener-notas.php" method="post">
...
   <button type="submit" class="submit">Ver Resultados</button>
</form>
Por otra parte con las conexiones SSL y dependiendo de la configuración del servidor de la pagina web (en muchos servidores están configurados sin la opción SNI) y la versión de las INDY que tengas instaladas, puedes llegar a tener bastantes complicaciones para poder acceder. Las INDY en las versiones anteriores no están bien preparadas para las conexiones de tipo SSL y hay que aplicar distintos tratamientos. En estos enlaces se habla de este problema en particular:

https://stackoverflow.com/questions/...en-from-server
https://stackoverflow.com/questions/...ni-doesnt-work

Y la solución que proponen y yo estoy aplicando para este problema es esta, en particular en el evento StatusInfoEx del IdSSLIOHandlerSocketOpenSSL1 inserta el siguiente código, aunque aun hay sitios que se resisten y no consigo acceder

Código Delphi [-]
procedure TForm1.IdSSLIOHandlerSocketOpenSSL1StatusInfoEx(
  ASender: TObject; const AsslSocket: PSSL; const AWhere, Aret: Integer;
  const AType, AMsg: string);
begin
  if (ASender is TIdSSLIOHandlerSocketOpenSSL) then
    SSL_set_tlsext_host_name(AsslSocket, (ASender as TIdSSLIOHandlerSocketOpenSSL).host);
end;

Un saludo
Responder Con Cita
  #8  
Antiguo 04-06-2018
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: May 2006
Posts: 250
Poder: 13
darkbits Va por buen camino
hola
dosher81 yo tambien estoy haciendo el mismo proyecto pero no se donde comenzar
porfa me podes compartir un ejemplo de como manehas httcli get o post

necesito autentificarme a una pagina y dentro del panel realizar insertar modificar y elimanar

te agradesco tu colaboracion
__________________
Gracias por su coloración club delphi

darkbits ;)
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Enviar variables a una pagina y recoger los resultados darkamerico Internet 3 08-11-2016 08:27:23
enviar datos a un formulario en una pagina thecidmx Internet 2 05-06-2013 15:07:30
leer datos de una pagina WEB enmava Varios 1 09-03-2010 17:27:35
Enviar datos de un formulario a una pagina barracuda PHP 3 28-11-2007 21:08:40
Leer datos desde una página Web cone220 Internet 1 16-01-2004 23:03:44


La franja horaria es GMT +2. Ahora son las 11:29:47.


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