Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-04-2020
muli muli is offline
Miembro
 
Registrado: jun 2003
Ubicación: A Coruña
Posts: 194
Poder: 21
muli Va por buen camino
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.
__________________
SI UN PROBLEMA TIENE SOLUCION, YA NO ES UN PROBLEMA, Y SI NO LA TIENE PARA QUE PREOCUPARSE.
Responder Con Cita
  #2  
Antiguo 08-04-2020
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por muli Ver Mensaje
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
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 09-04-2020
muli muli is offline
Miembro
 
Registrado: jun 2003
Ubicación: A Coruña
Posts: 194
Poder: 21
muli Va por buen camino
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
__________________
SI UN PROBLEMA TIENE SOLUCION, YA NO ES UN PROBLEMA, Y SI NO LA TIENE PARA QUE PREOCUPARSE.
Responder Con Cita
  #4  
Antiguo 09-04-2020
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Pero no veo por ningún sitio el POST.
Código Delphi [-]
...
IdHTTP1.Post(URLGC, data);
...

Revisa este código de [dec]
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 09-04-2020
muli muli is offline
Miembro
 
Registrado: jun 2003
Ubicación: A Coruña
Posts: 194
Poder: 21
muli Va por buen camino
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.
__________________
SI UN PROBLEMA TIENE SOLUCION, YA NO ES UN PROBLEMA, Y SI NO LA TIENE PARA QUE PREOCUPARSE.
Responder Con Cita
  #6  
Antiguo 14-04-2020
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 24-04-2020
muli muli is offline
Miembro
 
Registrado: jun 2003
Ubicación: A Coruña
Posts: 194
Poder: 21
muli Va por buen camino
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.
__________________
SI UN PROBLEMA TIENE SOLUCION, YA NO ES UN PROBLEMA, Y SI NO LA TIENE PARA QUE PREOCUPARSE.
Responder Con Cita
Respuesta



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
como mostrar una pagina(html) parte por parte? gabrielflowers PHP 10 02-04-2008 00:37:21
El Gobierno regional culpa a los viajeros de los retrasos que sufre el metro marcoszorrilla La Taberna 7 23-01-2007 10:40:14
Conmemoran en la Unam 70 años de la guerra civil española poliburro La Taberna 0 12-12-2006 05:29:45
Problemas de comunicacion con Indy Ver. Mas nueva ( Proyecto Ciber Parte 2) IcebergDelphi Internet 0 14-10-2004 05:10:29
comunicacion TCP/IP jmbarrio Internet 2 20-05-2003 22:02:27


La franja horaria es GMT +2. Ahora son las 17:42:37.


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
Copyright 1996-2007 Club Delphi