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
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 |
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 |
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 |
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
|
Cita:
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. |
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)
para que sirve esto?
veo que hay otras opciones sslvSSLv23 por ejemplo |
*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 ??? |
Cita:
|
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..... |
Cita:
Con esto añades un XML al envío (previa carga del XML en el Stream Contenido). |
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 |
Cita:
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... :p:p |
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) 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... |
actualizacion :
agregue el componente OAuth2Authenticator en el restclient2 asocie el componente en la propiedad "authenticator" cambie el Token Type = ttBEARER ya se conecta al repositorio donde debo colocar el archivo.... ahora investigar como subir el archivo de texto |
continuo con mi problema
con esta parte me conecto al endpoint
este es el archivo q quiero enviar localfile := 'd:\desarrollo\concesiones\servicial\aris\envios\LURIN-09052023.txt'; primer intento fallido
segundo intento fallikdo
tercer intento fallido
cuarto intento fallido
quinto intento fallido
mi razonamiento es el siguiente.... si en postman coloco el archivo en el body (form-data) el key es "archivo" y el value es el nombre del archivo el tema es que el archivo es de tipo "file" creo que casi todo esta bien.... incluso cuando pruebo con postman (sin enviar el archivo o archivo vacio) me devuelve el mismo mensaje que en delphi, parece que solo tengo que descubrir como meter en el body del request los parametros o será que ya me hice un mundo en la cabeza.. y no puedo ver la solución |
Cita:
|
Hay varias formas, puedes probar esta:
|
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
me gustaria mucho ENTENDER como es el proceso..... si me das una mano seria genial gracias |
Neftali te comenta que utilices:
Pero tu utilizas:
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. |
hola gracias por responder
estuve viendo el tema que me recomendp Netfali para eso estoy usando el TStream y "cargandolo" en el body
en restdeguger no encuentro una forma de subir el txt (es el unico archivo q quiero subir.. no hay xml) uso addbody porque en el restrequest no hay un body.add |
La franja horaria es GMT +2. Ahora son las 01:13:52. |
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