Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Comunicacion de Parte de Viajeros a la Guardia Civil (España) (https://www.clubdelphi.com/foros/showthread.php?t=94344)

cocute 15-01-2020 20:14:38

Cita:

Empezado por Casimiro Notevi (Mensaje 535219)
Entonces, todos somos culpables, maleantes, criminales, terroristas, asesinos, ladrones, etc... hasta que se demuestre lo contrario.

es como que digas para qué ponen detectores de robo en productos de tiendas y supermercados si no somos todos ladrones, o para que nos hacen control de alcoholemia a los que no hemos bebido.....

Casimiro Notevi 15-01-2020 21:09:56

Cita:

Empezado por cocute (Mensaje 535221)
es como que digas para qué ponen detectores de robo en productos de tiendas y supermercados si no somos todos ladrones, o para que nos hacen control de alcoholemia a los que no hemos bebido.....

Para nada, los detectores que dices controlan los productos, no a las personas.

muli 15-01-2020 22:20:24

Bueno, creo que nos estamos desviando un poco del asunto, se trata de enviar un fichero a una URL, las opiniones de cada uno acerca de la seguridad de los negocios,cosas, productos, personas, etc, pues eso, son opiniones y seguramente habrá tantas opiniones distintas como usuarios hay en el foro, pero lo que seguro solo hay una sola respuesta es la forma del envio de la información y el fichero, por lo que si os parece bien nos centramos en Delphi (que aparte de ser una empresa relacionada con el mundo del automovil) es el entorno de programación del que todos los usuarios de este foro estamos profundamente enamorados.

Un Saludo a todos.

Casimiro Notevi 15-01-2020 22:51:50

Cita:

Empezado por muli (Mensaje 535225)
Bueno, creo que nos estamos desviando un poco del asunto, se trata de enviar un fichero a una URL, las opiniones de cada uno acerca de la seguridad de los negocios,cosas, productos, personas, etc, pues eso, son opiniones y seguramente habrá tantas opiniones distintas como usuarios hay en el foro, pero lo que seguro solo hay una sola respuesta es la forma del envio de la información y el fichero, por lo que si os parece bien nos centramos en Delphi (que aparte de ser una empresa relacionada con el mundo del automovil) es el entorno de programación del que todos los usuarios de este foro estamos profundamente enamorados.
Un Saludo a todos.

Tenemos por costumbre hablar de todo :D
Por cierto, la empresa de componentes para vehículos Delphi no tiene nada que ver con nuestro Delphi.

muli 08-04-2020 01:19:22

No he encontrado mucha información en internet acerca del componente idhttp de las indy (la pagina de las indy está abierta pero intentas descargar manuales y fallan todos los enlaces). Estoy preparando el envio y estoy algo atascado, hago lo siguiente:
Código Delphi [-]
uses
    IdMultipartFormData;

procedure TForm1.Button1Click(Sender: TObject);
var
  data: TIdMultiPartFormDataStream;
begin
    data := TIdMultiPartFormDataStream.Create;
    try
      data.AddFormField('usuario', 'admin');
      data.AddFormField('password', 'myPass');
      Memo1.Lines.Text := IdHTTP1.Post(la url que indico, data);
    finally
      data.Free;
    end;
end;

La url que me han proporcionado es:
"https://usuario':'password@hospederias.guardiacivil.es/hospederias/servlet/ControlRecepcionFichero" por lo que deduzco que no yo no debería de poner el usuario y la contraseña en la variable data, sino en la URL.

Pero como le añado el fichero que he creado pues creo que es la propiedad name no? , el type, el enctype como los indico, por que el metodo supongo que va de la forma indicada (supongo que solo podrían ir POST o GET),

Gracias a todos por vuestra ayuda.

Neftali [Germán.Estévez] 08-04-2020 12:33:04

Cita:

Empezado por muli (Mensaje 536632)
Pero como le añado el fichero que he creado pues creo que es la propiedad name no?

Esta clase TIdMultipartFormDataStream tiene el método Addfile.

Aquí tienes un hilo que habla sobre el tema, aunque si buscas en los foros, seguro que encontrarás más:
https://www.clubdelphi.com/foros/showthread.php?t=50768

muli 09-04-2020 00:47:07

Estoy probando esto:
Código Delphi [-]
    Data := TIdMultiPartFormDataStream.Create;
    Usuario:= Variable String donde capturo el nombre de usuario
    Contrasinal:=Variable String donde capturo el valor de la contraseña
    Data.AddFile('file',Carpeta+'\'+NombreFichero,'multipart/form-data');   // Añado el fichero en Data
    URLGC:='https://'+Usuario+':'+Contrasinal+'@hospederias.guardiacivil.es/hospederias/servlet/ControlRecepcionFichero'; // URL montada como las indicaciones del G.C.
    Memo1.Lines.Clear;
    Memo2.Lines.Clear;
    Memo1.Lines.Add(URLGC);   //Enseño la url para verificar que está bien montada.
    idHttp1.Request.Method:='POST';
    Memo2.Lines.Text :=idHTTP1.Post(URLGC,Data);
    Data.Free;

Y luego esto:

Código Delphi [-]
    Data := TIdMultiPartFormDataStream.Create;
    Usuario:=Datos.QueryEmpresa.FieldByName('Usuario').AsString;
    Contrasinal:=Datos.QueryEmpresa.FieldByName('Contrasinal').AsString;
    Data.AddFormField('Usuario',Usuario);
    Data.AddFormField('Password',Contrasinal);
    Data.AddFile('file',Carpeta+'\'+NombreFichero,'multipart/form-data');
    URLGC:='https://hospederias.guardiacivil.es/hospederias/servlet/ControlRecepcionFichero';  No tiene sentido poner el usuario  y la contraseña, supongo
    Memo1.Lines.Clear;  
    Memo2.Lines.Clear;
    Memo1.Lines.Add(URLGC);
    idHttp1.Request.Method:='POST';                       // Esto da igual que lo ponga o no, el resultado es el mismo.
    Memo2.Lines.Text :=idHTTP1.Post(URLGC,Data);
    Data.Free;

Alguna luz que me ilumine en mi camino, no consigo que se envie el fichero.

Saludos

Neftali [Germán.Estévez] 09-04-2020 13:49:15

Pero no veo por ningún sitio el POST.
Código Delphi [-]
...
IdHTTP1.Post(URLGC, data);
...

Revisa este código de [dec]

muli 09-04-2020 19:18:58

Gracias Germán por tu dedicación, creo que vamos por el buen camino, pero no acabo de pillar la historia, y me da que es más fácil de lo que parece. Usando lo del amigo DEC hago lo siguiente:
Código Delphi [-]
    Usuario:= 'Variable que recoge el nombre del usuario';
    Contrasinal:= 'Variable que recoge la contraseña';

    Memo2.Lines.Clear;

    AValues := TStringList.Create;

    AValues.Values['usuario']  := Usuario;
    AValues.Values['password'] := Contrasinal;

    URLGC:='https://hospederias.guardiacivil.es/hospederias/servlet/ControlRecepcionFichero'

    PostStream:= TIdMultiPartFormDataStream.Create;
    ResponseStream := TStringStream.Create('');
    Try
      PostStream.AddFormField('usuario', AValues.Values['usuario']);
      PostStream.AddFormField('password', AValues.Values['password']);
      PostStream.AddFile('file',Carpeta+'\'+NombreFichero,'multipart/form-data');
      IdHTTP1.Post(URLGC, PostStream, ResponseStream);
    finally
      Memo2.Text := ResponseStream.DataString;
      ResponseStream.Free;
      PostStream.Free;
      AValues.Free;
    end;

Y recibo el mensaje (por lo menos ya recibo algo). "EidHttpProtocolException with message 'HTTP/1.1 401 Authorization Required'"
Me da que es algo de SSL pues la dirección web comienza por https y en el ejemplo de Indy de Delphi 6 con este componente cuando introduzco la dirección hhtps el solo marca un checkbox que pone SSL y luego le asigna al componente en la propiedad Intercept:= SSL, pero por mas que miro no encuentro de donde sale ese SSL.

Saludos.

Neftali [Germán.Estévez] 14-04-2020 09:21:45

Si buscas en los mensajes del foro.
Verás que hay una diferencia entre los que llaman a una dirección HHTP y los que lo hacen a una HTTPS.
En el segundo caso debes utilizar las librerías de SSL y utilizar un componente nuevo de SSL (TidSSLIOHandlerSocketOpenSSL) que va "ligado" al TidHTTP.

Busca en los foros mensajes que hagan referencia a este componente y encontrarás código de cómo se utiliza.

muli 24-04-2020 03:14:22

Problema resuelto:
Procedimiento para enviar el fichero a la página web de la Guardia Civil (España)
Código Delphi [-]
    Usuario:=   Variable String donde guardo el nombre del usuario
    Contrasinal:= Variable String donde guardo la contraseña   
// Estos dos ultimos valores los proporciona la guardia civil en el momento de registrar el establecimiento.

    URLGC:='https://'+Usuario+':'+Contrasinal+'@'+urlindicada por la guardia civil.

    PostStream:= TIdMultiPartFormDataStream.Create;
    ResponseStream := TStringStream.Create('');
    Try
      PostStream.AddFile('file',Carpeta+'\'+NombreFichero,'multipart/form-data');
      IdHTTP1.Post(URLGC, PostStream, ResponseStream);
    finally
      ResponseStream.Free;
      PostStream.Free;
      AValues.Free;
    end;

En el formulario tengo dos componentes Indy (idHttp,IdSSLIOHandlerSocketOpenSSL), el primero de ellos lo pongo en protocolo pv1_0, y en httpOptions lo marco a true holnProcessAuth, el segundo lo enlazo en su propiedad IOHandler del primero, metodo sslvSSLv23, y mode sslmBoth.

Saludos a todos.

manelb 24-04-2020 09:27:51

Muchísimas gracias Muli, nos sera de gran ayuda...

Saludos

Casimiro Notevi 24-04-2020 10:07:18

^\||/^\||/^\||/

pepe_baile 24-06-2020 17:41:16

Fichero viajeros para la policia
 
Hola buenas tardes,
quizas sea un poco tarde, pero en mi empresa tenemos una dll hecha por nosotros en la que entra el código mzr que lleva el dni o los pasaportes en una variable y salen ya los diferentes campos, nombre, apellido, fecha nacimiento, en otras variables.
Además también tenemos otra dll para crear el fichero de texto oficial que luego se envía a la policia o guardia civil.
Están hechas en C++.

Si alguien le puedo ayudar que lo diga,

saludos.

muli 25-06-2020 02:28:39

Hombre, pues si que parece interesante esas dll, puedes indicar si las venden y su precio en caso de venderlas, y en caso de cederlas gratuitamente estaría bien colgarlas en el FTP del club o publicar el enlace de la descarga.

Saludos.

pepe_baile 25-06-2020 11:20:19

Parte de viajeros
 
Hola,
espero poder colocar aquí el código para todo el mundo, no se muy bien como,
pero lo hacemos
saludos

Casimiro Notevi 25-06-2020 11:37:16

Cita:

Empezado por pepe_baile (Mensaje 537780)
Hola,
espero poder colocar aquí el código para todo el mundo, no se muy bien como,
pero lo hacemos
saludos

Aquí: http://terawiki.clubdelphi.com/
También tienes unas instrucciones para que sea luego bien accesible.

pepe_baile 29-06-2020 16:56:25

Parte de viajeros
 
Hola,
he subido la DLL que había comentado, por si ha alguien le sirve.
saludos

muli 29-06-2020 18:16:41

Perfecto, estupendo, serías tan amable de citar la ubicación.

Gracias.

Casimiro Notevi 29-06-2020 19:11:22

http://terawiki.clubdelphi.com/Build...tes-Funciones/


La franja horaria es GMT +2. Ahora son las 05:12:07.

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