Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-04-2023
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
post a web

buenas tardes
mediante postman puedo logearme a esta pagina (me genera un token)

https://zona-api.aris.com.pe/v1/user/signin

en la zona del body (form-data) coloco las credenciales user y password y se conecta

como podria hacelo en delphi?

estuve intentando con indy http

Código Delphi [-]
procedure TForm5.Login(name: string; Pass: string);
var
  Params: TStringList;
begin
  Params := TStringList.Create;
  try
    Params.Add('user='+name);
    Params.Add('pass='+pass);

    Memo1.Text := IdHTTP1.Post('https://zona-api.aris.com.pe/v1/user/signin', Params);
  finally
    Params.Free;
  end;
end;

pero me aparace un mensaje de iohandler value is not valid

me dan una mano?

porque luego de logearme debo enviar un archivo a otra direccion
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #2  
Antiguo 27-04-2023
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.285
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
No comentas con qué versión de Delphi estás trabajando. Si es con una de las últimas versiones, mejor utilizar los componentes REST (RESTClient, RESTResponse y RESTRequest).
Si es así, utiliza RESTDebugger, la aplicación que viene con Delphi (similar a Postman, pero más sencilla). Si consigues conectarte con RESTDebugger, esta misma utilidad te genera los componentes configurados para que los pegues en tu aplicación y realizar la conexión.

Si estás utilizando una versión antigua, las Indy son una buena opción. Pero como estás conectando a un https, necesitas un componente adicional para gestionar la conexión segura (TIdSSLIOHandlerSocketOpenSSL).

Si buscas en los foros por TIdSSLIOHandlerSocketOpenSSL, encontrarás muchos hilos con código, donde puedes ver cómo se utiliza:
https://www.clubdelphi.com/foros/sho...64&postcount=6
https://www.clubdelphi.com/foros/showthread.php?t=92982
__________________
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 27-04-2023
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
hola buenos dias
gracias por responder, como siempre tú, un capo es estos temas
estuve revisando y si, el problema es el https:
incluso estuve haciendo unas pruebas en php con curl, pero tampoco funcionaba, y era actualizar el certificado del curl, y ya pudo funcionar

pero quiero hacerlo en delphi, por cierto uso la version xe7

colocaré mis avances y espero contar con tu ayuda, gracias
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #4  
Antiguo 27-04-2023
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
encontré un ejemplo, pero me esta apareciendo un error indicando que las librerias no estan cargadas
"could not load SSL library", en la linea
IdHTTP1.Post('https://zona-api.aris.com.pe/v1/user/signin', S, M);

busque aqui
http://delphiaccess.com/foros/index....d-ssl-library/

descargue las librerias las copie en la carpeta de la aplicacion y nada... sigue lo mismo


Código Delphi [-]
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdMultipartFormData,IdSSLOpenSSL,
  Vcl.StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP;

type
  TForm1 = class(TForm)
    IdHTTP1: TIdHTTP;
    Button1: TButton;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var S: TStringList;
   M: TStream;
   lHTTP: TIdHTTP;
begin
 S := TStringList.Create;
 M := TMemoryStream.Create;
 try
   S.Values['user'] := 'usuario';
   S.Values['password'] := 'clave';
   lHTTP := TIdHTTP.Create;

   IdHTTP1.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(lHTTP);
   IdHTTP1.Request.ContentType := 'multipart/form-data';
   IdHTTP1.Post('https://zona-api.aris.com.pe/v1/user/signin', 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;
end;

procedure TForm1.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;

end.
__________________
Dulce Regalo que Satanas manda para mi.....

Última edición por oscarac fecha: 27-04-2023 a las 21:25:14.
Responder Con Cita
  #5  
Antiguo 28-04-2023
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.285
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 oscarac Ver Mensaje
encontré un ejemplo, pero me esta apareciendo un error indicando que las librerias no estan cargadas
"could not load SSL library", en la linea
IdHTTP1.Post('https://zona-api.aris.com.pe/v1/user/signin', S, M);

descargue las librerias las copie en la carpeta de la aplicacion y nada... sigue lo mismo

Revisa que has descargado todos los ficheros necesarios.
También revisa que estás con la versión necesaria, la mayoría de estos problemas vienen por incompatibilidad entre versiones de 32/64 bits.
__________________
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
  #6  
Antiguo 28-04-2023
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Como siempre tenias la razon
en delphi agregue la plataforma de 64 bits y ya no me da el error de libreria

pero tengo un problema

cuando me conecto via POSTMAN, los datos del user y password los coloco en el body, como le indico a delhi en que "pestaña" (si lo igualo con postamn) colocar el user y password?

imagino que se debe parametrizar en la parte del create (segun mi ejemplo)
Código Delphi [-]
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];

para que sirve esto?

Código Delphi [-]
  SSLOptions.Method := sslvSSLv2;

veo que hay otras opciones sslvSSLv23 por ejemplo
__________________
Dulce Regalo que Satanas manda para mi.....
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
Post Con Demora jerry_mdq Tablas planas 35 05-05-2011 19:53:56
POST sin boton ZayDun HTML, Javascript y otros 1 19-04-2008 11:33:46
IBDatase Insert Post Edit Post ariefez Firebird e Interbase 4 12-10-2005 01:53:04
After Post en interbase jgutti Firebird e Interbase 2 09-03-2005 06:00:12
cancelar post?? ebeltete SQL 9 17-06-2004 22:46:19


La franja horaria es GMT +2. Ahora son las 18:07:38.


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