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 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
*ACTUALIZACION*

probé usando los componentes REST (en 64 bits)
use rest debugger copie los componentes y aparece el siguiente mensaje

1
{"success":true,"statusCode":200,"status":200,"data":{"mensaje":"Falta parametros requeridos","data":null,"status":400}}

sin embargo en postman aparecen estos

2
{"success":true,"statusCode":200,"status":200,"data":{"mensaje":"credenciales","data":{"tk":"eyJ0eXA iOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE2ODI2ODgyNTMsImlzcyI6ImN1Ym9yb2pvIiwibmJmIjoxNjgyNjg4MjUzLC JleHAiOjE2ODc4NzIyNTMsImRhdGEiOnsiaWQiOjEwMDksIm5hbWUiOiJDb25jZXNpb25hcmlvIn19.gwl7llmglpMA57F_s88XA z-gQ9vbqo3cmG_foJZa-LIxkNB2pBZXe1Gi4UjZjtbNOgGNWE075outIM42ZTQD8A"},"status":200}}

En postman si los parametros (user y password) los coloco en header aparece el mensaje 1, debo colocar los parametros en el body usando form/data

la pregunta es... esas especificaciones como las coloco el delphi ya sea usando indy o rest ???
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #2  
Antiguo 28-04-2023
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 264
Poder: 2
pgranados Va por buen camino
Cita:
Empezado por oscarac Ver Mensaje
*ACTUALIZACION*

probé usando los componentes REST (en 64 bits)
use rest debugger copie los componentes y aparece el siguiente mensaje

1
{"success":true,"statusCode":200,"status":200,"data":{"mensaje":"Falta parametros requeridos","data":null,"status":400}}

sin embargo en postman aparecen estos

2
{"success":true,"statusCode":200,"status":200,"data":{"mensaje":"credenciales","data":{"tk":"eyJ0eXA iOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE2ODI2ODgyNTMsImlzcyI6ImN1Ym9yb2pvIiwibmJmIjoxNjgyNjg4MjUzLC JleHAiOjE2ODc4NzIyNTMsImRhdGEiOnsiaWQiOjEwMDksIm5hbWUiOiJDb25jZXNpb25hcmlvIn19.gwl7llmglpMA57F_s88XA z-gQ9vbqo3cmG_foJZa-LIxkNB2pBZXe1Gi4UjZjtbNOgGNWE075outIM42ZTQD8A"},"status":200}}

En postman si los parametros (user y password) los coloco en header aparece el mensaje 1, debo colocar los parametros en el body usando form/data

la pregunta es... esas especificaciones como las coloco el delphi ya sea usando indy o rest ???
Mándanos tu request formado en postman y tu request formado en restdebugger para poder ayudarte mejor
Responder Con Cita
  #3  
Antiguo 29-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
resolvi el problema usando REST

les dejo los pasos que usé quizá le sirva a alguien q tenga el mismo problema

en RestClient / params - > coloque el user y el password con sus valores (en kind colocar pkGetorPost) en cada uno de los parametros
RestCliente / ContentType - > multipart/form-data

RestRequest / Method -> rmPost

y listo

soy feliz

{"success":true,"statusCode":200,"status":200,"data":{"mensaje":"credenciales","data":{"tk":"eyJ0eXA iOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE2ODI3MTk0OTksImlzcyI6ImN1Ym9yb2pvIiwibmJmIjoxNjgyNzE5NDk5LC JleHAiOjE2ODc5MDM0OTksImRhdGEiOnsiaWQiOjEwMDksIm5hbWUiOiJDb25jZXNpb25hcmlvIn19.bX6vMTbA1EbXaO3S4D16v 6KD_zcfmLRdZ5jmHFe4ZboR2IE_-zWfooT2TCVWQMdwnt54-fQA14usMEofE6TVJQ"},"status":200}}


ahora a averiguar como subir un archivo a esa web.....
__________________
Dulce Regalo que Satanas manda para mi.....

Última edición por oscarac fecha: 29-04-2023 a las 00:24:47.
Responder Con Cita
  #4  
Antiguo 02-05-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.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 oscarac Ver Mensaje
ahora a averiguar como subir un archivo a esa web.....
En el componente TREStRequest tienes la propiedad Body y utilizando esa propiedad puedes realizar un Add de un fichero por ejemplo:

Código Delphi [-]
...

var
  Contenido:TStream;
...
  RESTRequest1.Body.Add(Contenido, TRESTContentType.ctAPPLICATION_XML);
Con esto añades un XML al envío (previa carga del XML en el Stream Contenido).
__________________
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-05-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
gracias por responder.....
estuve haciendo las pruebas via postman y ya funciona....
el tema aqui en delphi es....
uso compronentes REST para conectarme y obtener el token
debo usar otros componentes rest para enviar el archivo? asumo que si
el archivo que pretendo enviar en un txt
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #6  
Antiguo 09-05-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.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 oscarac Ver Mensaje
el tema aqui en delphi es....
uso compronentes REST para conectarme y obtener el token
debo usar otros componentes rest para enviar el archivo? asumo que si
el archivo que pretendo enviar en un txt
Esto es como plantear ¿Debo usar 2 componentes de TQuery para un INSERT y un SELECT o puedo usar el mismo?
Pues efectivamente puedes hacer las 2 cosas, según lo que te interese por comodidad, legibilidad, facilidad,...

* Si usas un sólo componente lo configuras para la primera operación y luego para la segunda.
* Si usas 2 diferentes, pues ya puedes tener configurado cada uno con sus propiedades.

En la segunda tendrás menos código seguramente, pero ambas son igual de buenas, dependiendo de los que prefieras hacer. Vamos que va a gustos la cosa...
__________________
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 09-05-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
exactamente, pero como los parametros los obtuve de restrequest, entonces no conozco el contenido al 100%

podrias ayudarme en una explicacion paso a paso como usar 2 componentes (teniendo en cuenta que en el primero ya logré la conexion y tengo el token)

Código Delphi [-]
 varTk := JsonValue.GetValue<string>('data.data.tk');
aqui tengo el token
tengo un archivo de texto en d:\archivos\
quiero enviarlos
segun veo en postman debo usar
bearer token
content-type forma-data
en el body un key de nombre archivo tipo file y en el value el nombre del archivo

como replico esto en delphi?


primera vez q estoy usando rest, no he tenido experiencias previas...
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #8  
Antiguo 12-05-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
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
En el componente TREStRequest tienes la propiedad Body y utilizando esa propiedad puedes realizar un Add de un fichero por ejemplo:

Código Delphi [-]
...

var
  Contenido:TStream;
...
  RESTRequest1.Body.Add(Contenido, TRESTContentType.ctAPPLICATION_XML);
Con esto añades un XML al envío (previa carga del XML en el Stream Contenido).
creo que la solución esta aquí, me explicas como cargar un txt en el Dtream porfa?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #9  
Antiguo 15-05-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.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
Hay varias formas, puedes probar esta:

Código Delphi [-]
stream2 := TStringStream.Create(System.Utf8ToAnsi(s1.DataString), TEncoding.ANSI);
__________________
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
  #10  
Antiguo 15-05-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
Averigue un poco mas y estoy asignando los valores de forma manual
la conexion inicial para obtener el token, funciona....
la conexion a la web donde debo colocar el archivo funciona....
lo que hasta ahora no puedo lograr es subir el archivo...
quisiera entender la logica...

esto es lo q he avanzado

Código Delphi [-]
localfile := 'd:\desarrollo\concesiones\servicial\aris\envios\LURIN-09052023.txt';

  try
    // CLiente
    RCCredenciales.ResetToDefaults;
    RCCredenciales.BaseURL := 'https://zona-api.aris.com.pe/v1/user/signin';
    RCCredenciales.Accept := 'application/json, text/plain; q=0.9, text/html;q=0.8,';
    RCCredenciales.AddParameter('user', 'usuario');
    RCCredenciales.AddParameter('password', '**************');

    RQCredenciales.Method := TRESTRequestMethod.rmPOST;
    RQCredenciales.Execute;

    // Ya se conectó a la web

    jValue := RRCredenciales.JSONValue;
    Branch := jValue.ToString;
    JSonValue := TJSonObject.ParseJSONValue(Branch);

    // Chapo El Token y lo coloco en el Auth2
    oAUTHRQ.AccessToken := JSonValue.GetValue<string>('data.data.tk');
    oAUTHRQ.TokenType := TOAuth2TokenType.ttBEARER;
    Memo1.Text := Branch;

    RCFile.ResetToDefaults;
    RCFile.BaseURL := 'https://zona-api.aris.com.pe/v1/concesionario/masivo';
    RCFile.Accept := '*/*';

//Set Content-Type to text/plain
    RQFile.Params.AddHeader('Content-Type', 'multipart/form-data');


//// aqui es donde me pierdo y no logro entender como adjuntar el archivo
/// ni decirle a delphi que tiene key y value
/// l key debe ser "archivo" y el value el nombre del archivo

//Set Request Body to FileStream
    try
      _file := TStringStream.Create(System.Utf8ToAnsi(localfile), TEncoding.ANSI);
    finally

    end;
    RQFile.ClearBody;
    RQFile.AddParameter('archivo',localfile);
    RQFile.AddBody(_file, TRESTContentType.ctTEXT_PLAIN);

    RCFile.Authenticator := oAUTHRQ;
    RQFile.Execute;
    jValue := RRFile.JSONValue;
    Memo2.Text := jValue.ToString;



    // Continuar con la segunda Conexion

  finally

  end;


me gustaria mucho ENTENDER como es el proceso.....
si me das una mano seria genial
gracias
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #11  
Antiguo 15-05-2023
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 264
Poder: 2
pgranados Va por buen camino
Neftali te comenta que utilices:
Código Delphi [-]
RESTRequest1.Body.Add

Pero tu utilizas:
Código Delphi [-]
RQFile.AddParameter('archivo',localfile);
RQFile.AddBody(_file, TRESTContentType.ctTEXT_PLAIN);

Si la petición ya la lograste utilizando alguna herramienta como PostMan o directamente el RestDebugger compara tu request formado en estas herramientas contra el tuyo formado manualmente para identificar donde esta el problema.

En otro punto, veo que en el codigo cargas un archivo .txt pero en los comentarios tambien mencionan un archivo .xml

¿Que archivo vas a cargar? Saludos.
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 00:19:14.


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