Muchisimas Gracias aris por tan valiosa explicacion !!!y con respecto a tu pregunta en el minuto 21:40 si No recontra interesa como enviar imagenes al servidor mediante retrofit ....valla un abrazo Grande desde argentina !!
No sabia que ya soy avanzado en RetroFit. Gracias siempre por tus tutoriales el de Arquitectura mvvm me ayudo mucho para un proyecto que actualmente estoy trabajando.
Que decirte Aris, es que tu si que te vas a la M....da con estos tutoriales!!! muy bien explicados como siempre, te felicito tu contenido aporta mucho a esta comunidad desarrolladora!!! saludos desde Argentina y muchas gracias por tus aportes!
Muchas gracias por estos vídeos. Estoy haciendo DAM y me han venido al pelo tus vídeos de retrofit, room y Dagger Hilt para el proyecto final. Sólo me queda algo de Osmdroid y Firebase y queda más o menos termianda. Espero que se pueda ver un día mi app en la Play Store. Sigue así! Un saludo.
@AristiDevs quedo increíblemente bien explicado en verdad super sencillo de entender y aplicar y le das una chispa que no da flojera ver el video enserió que buenos tutoriales
Me vas a solucionar el día de mañana! He detectado un problema a la hora de enviar archivos más pesados de 500KB y todo apuntaba a que necesitaba enviar con Multipart. La app que desarrollo usa Volley de forma habitual y he visto que era un gran inconveniente ya que no soporta Multipart de forma nativa, y te obliga a picar un poco de código, en cambio en Retrofit ya te viene. Muchas gracias por el tutorial 😉
Muy bien explicado, tiro una idea para otro video, Deserializacion usando GSON y retrofit2. Normalmente las API response no tienen ni cerca la estructura de nuestros data models y reflejar esa response usando clases puede terminar en un infierno de clases anidadas, arrays y basura que no necesitamos en nuestros modelitos de 4 miembros jaja
Muy buena explicación, muchas gracias por el aporte. Que casualidad que desde ayer estuve buscando cómo implementar Interceptor con Retrofit2 y como yo había iniciado la implementación de mi App en base a uno de tus tutoriales (MVVM - Clean Architecture, Retrofit 2 y Corrutinas), me pregunté y por qué Aris tardará tanto en subir un nuevo video con más sobre Retrofit2? Pues bueno, me alegra haberte invocado. Utilicé un Interceptor para verificar conectividad (ConnectivityManager) y controlar timeout (SocketTimeoutException) personalizando los mensajes de las IOException para retornar al usuario. Ojalá haya segunda parte. Saludos.
Hola Aristides, Podridas ser tan amable de pasar unos tips acerca de la manera más apropiada para manejar las excepciones de la conexión por falta de conexión del dispositivo o por caída del servicio API ?
Vengo de tus videos de Android Kotlin desde cero, soy programador intermedio en laravel y estoy buscando un maestro como tu en android, pense en swift(muy carisimo), en react native(tedioso), me decidi por android kotlin , claramente me subscribi a tu canal y estoy pensando seriamente en ser parte de la membresia, ya tengo a otro youtuber, pero necesito saber que ofrece tu membresia,,saludos y muchas gracias por el contenido
Hola Aris, como siempre contenido de calidad, podrías hacer un video en el que se muestre como descargar y mostar archivos PDF desde una API usando MVVM y Hilt. Saludos
muchas gracias por el video, me ha venido genial! ojala pudieses explicar como guardar el token cuando haces login y usar ese mismo token para hacer llamadas a la API. Muchas gracias por tus videos!
Hola Aris, una pregunta, si no quisiera tener o crear una nueva data class llamada GetAllDogResponse, InsertDogResponse, en lugar de eso tener un solo DogResponse que acepte una variable o resultado tipo T generico para luego poder hacerle el casting al response.body as T (lo que necesite), como se haria eso en kotlin?
estaría bien otro video en donde se manejen los códigos de error a nivel general por ejemplo el 401 ya que esto puede pasar en todos los servicios privados de una app, se crea algo así como un base response? suponiendo que el flujo siempre seria ir a refrescar el token y luego ahora si hacer el llamado al servicio, en general como se implementa eso?
Hola Aris, muy buenos videos, respecto a las llamadas POST podrias agragar como seria pasar un JSON y tambien un JSON dentro de un parametro como sy fuera el value, me refiero a algo asi ".../test&data={user:"myuser", psw:"123"}"
Hola Aris excelente vídeo... si puedes hacer el vídeo completo de subir la imagen seria genial 😁. Gracias por los tutos. Y vaya que también ando loco buscando como implementar un toolbar en fragments con el botón atrás, así que si puedes hacer uno te lo agradecería mucho...
En Kotlin puedes utilizar gráficos de navegación para realizar esa tarea y el gráfico se encarga de mostrar o no el botón de atrás e incluso le puedes colocar transiciones entre fragmentos. Espero te sea de utilidad
Te dejo un enlace con una introducción a los gráficos de navegación que espero te sirva developer.android.com/guide/navigation/navigation-design-graph?hl=es-419
Hola Aris! Gracias por tus videos, me ayudan muchisimo! Sabes donde puedo encontrar informacion que me ayude a entender mejor la manipulacion de las URL con retrofit? Siempre que pruebo llamadas con parametros adicionales como access-keys o querys, me crashean las app y creo que es por hacer una mala request, gracias y saludos!
Saludos, muy buen video, tengo usa duda, como arreglo el error de socket timeout que sucede cuando el usuario no tiene internet, dónde obtengo la excepción si eso ocurre? Pd. Amigo te faltó agregar este video a la lista de reproducción de Retrofit 2
Tengo una duda, al utilizar @Multipart como saben los campos image y myExample a que data class apunta?. Como se haría para indicar eso (en el ejemplo no se muestra una data class que contenga los campos image y myExample) pero suponiendo que fuera esta: data class Example (val image:String, myExample:String), como se haría?. Muchas Gracias
Con todo el cariño del mundo pero no hace falta que digas 3 veces en cada video lo de "Suscríbete", a todo el mundo le gusta la pasta pero no seas tan pesado chaval. Gracias por los videos.
En tu blog del curso en el capítulo de fragmentos mencionas que estos ya no se usan tanto. O sea que si empiezo una app desde cero y quiero hacerla con mvvm debo hacerla solamente con activities? O puedes detallar un poco más eso que mencionas que los fragmentos ya no se usan tanto? Y si es así entonces también dejamos atrás jetpack navigation? Saludos
Hola, una pregunta para una app para producción si uso una api gratuita es ilimitado osea que si a la app le llega a ir bien y tiene muchos usuarios haciendo peticiónes diariamente podría crashear o algo?
Hola AristiDevs sigo cada uno de tus videos y son excelentes!!! pero tengo un problema.. como hago para leer un API con certificado SSL .. me sale error!!.. porfavor podrias hacer un video sobre el uso de SSL con retrofit, ejemplos.. por favor!!
muy buenos videos.. por lo que vi me voy a entretener bastante por aca.. mucho mejor que ese curso pedorro de udemy que esta mas abandonado que viejo en asilo... ojala pueda encontrar lo que busco y una buena fuente de aprendizaje.. entiendo muy basico de programacion.. pero apretando botones voy llegando a buen puerto.. me gustaria hacerte una pregunta por privado cuando tengas unos minutos.. muy buen material... ni bien tenga el prime, me suscribo en twitch tmb...
Buenas, no puedo dar soporte personalizado, pero te invito a unirte al canal de discord (tienes todos los links en aristi.dev) y ahí debatimos todos los temas juntos!
Yo tengo una duda, que puede que sea una idotez. Pero cuando el api devevuelve un json con muchos nodos en plan {a:"a", b:"b", c:"c"... z:'z') y yo sólo necesito a y z. Cómo le digo que me parseé esos dos únicos elementos. Creo que en el tutorial anterior no lo hiceste y lo intenté y no salí bien parado. Y seguro qeu es una idotez. Gracias y enhorabuena por el currazo.
para hacer eso debes crear un data class que contenga: @SerializedName("a") val a: String? = null, @SerializedName("z") val z:String? = null con esto estás sacando los valores que te interesan y uniéndolos en un único objeto que sería tu data class. Espero haya sido claro jeje
hola aristidevs, descargue la app desde los comentarios pero no funciona, arroja el error okhttp3.internal.http2.StreamResetException: stream was reset: PROTOCOL_ERROR me podrias ayudar?
A los 1000 followers en instagram saco segunda parte! instagram.com/aristidevs/
jaja chantaje, cuando trabaje colaboro , sube mas videos porfavor
ya no tienes instagram??
sos un crack amigo, naufrago por internet buscando info de un tema hasta que lo veo explicado por vos gracias!
Muchisimas Gracias aris por tan valiosa explicacion !!!y con respecto a tu pregunta en el minuto 21:40 si No recontra interesa como enviar imagenes al servidor mediante retrofit ....valla un abrazo Grande desde argentina !!
No sabia que ya soy avanzado en RetroFit. Gracias siempre por tus tutoriales el de Arquitectura mvvm me ayudo mucho para un proyecto que actualmente estoy trabajando.
Que decirte Aris, es que tu si que te vas a la M....da con estos tutoriales!!! muy bien explicados como siempre, te felicito tu contenido aporta mucho a esta comunidad desarrolladora!!! saludos desde Argentina y muchas gracias por tus aportes!
Muchísimas gracias!!!
Me siento iluminada con estos vídeos, muchas gracias :D
Que brutal este video, tenia un dolor de cabezas para enviar un multipart y lo hiciste sencillisimo.
Video sagrado, carajo, ahora soy un dios de Retrofit, te amo
Viejo con razón te sigo, tu si explicas, clarito , saludos desde Colombia
Muchas gracias por estos vídeos.
Estoy haciendo DAM y me han venido al pelo tus vídeos de retrofit, room y Dagger Hilt para el proyecto final. Sólo me queda algo de Osmdroid y Firebase y queda más o menos termianda.
Espero que se pueda ver un día mi app en la Play Store.
Sigue así!
Un saludo.
ahahhaahaha, tienes al tito arist que te lo da todo explicadito , ahahahahahaha sos un crack , hahaha IDOLO!!
Llevaba tiempo buscando un video como este, mil gracias
@AristiDevs quedo increíblemente bien explicado en verdad super sencillo de entender y aplicar y le das una chispa que no da flojera ver el video enserió que buenos tutoriales
Muchísimas gracias!
buen video, fácil de digerir, estaría genial el tutorial des de tomar la foto hasta mandarla
Me vas a solucionar el día de mañana! He detectado un problema a la hora de enviar archivos más pesados de 500KB y todo apuntaba a que necesitaba enviar con Multipart. La app que desarrollo usa Volley de forma habitual y he visto que era un gran inconveniente ya que no soporta Multipart de forma nativa, y te obliga a picar un poco de código, en cambio en Retrofit ya te viene. Muchas gracias por el tutorial 😉
Broder, me cuadran mucho tus vídeos, me puta encantan, y sobe todo los vídeos no dejan de ser divertidos. Saludos desde Nicaragua
Muchas gracias!
Muy bien explicado, tiro una idea para otro video, Deserializacion usando GSON y retrofit2. Normalmente las API response no tienen ni cerca la estructura de nuestros data models y reflejar esa response usando clases puede terminar en un infierno de clases anidadas, arrays y basura que no necesitamos en nuestros modelitos de 4 miembros jaja
Wow muchisimas gracias por este video, verdaderamente me ayuda mucho. Gracias!!!
Muchísimas gracias por compartir tus conocimientos, Aris!!
Muchas gracias, me estás ayudando mucho con mi tfg!
Muy buena explicación, muchas gracias por el aporte. Que casualidad que desde ayer estuve buscando cómo implementar Interceptor con Retrofit2 y como yo había iniciado la implementación de mi App en base a uno de tus tutoriales (MVVM - Clean Architecture, Retrofit 2 y Corrutinas), me pregunté y por qué Aris tardará tanto en subir un nuevo video con más sobre Retrofit2? Pues bueno, me alegra haberte invocado.
Utilicé un Interceptor para verificar conectividad (ConnectivityManager) y controlar timeout (SocketTimeoutException) personalizando los mensajes de las IOException para retornar al usuario.
Ojalá haya segunda parte. Saludos.
Buen video, podrias hacer otro video para poder caputrar los errores que pueden llegar a suceder como Connection Timeout Exception y otros por favor
Yo apenas ando aprendiendo retrofit gracias por el tutorial llegaste en el momento adecuado :).
Me encanta la manera en la que explicas, directo y conciso
Hola Aristides, Podridas ser tan amable de pasar unos tips acerca de la manera más apropiada para manejar las excepciones de la conexión por falta de conexión del dispositivo o por caída del servicio API ?
Me gustaría ver el proceso de obtener la imagen desde galería para poder ser enviada en multipart
Muy buen video!
Sugerencia, podrías hablar sobre los callbacks? Que son y como se usan?
Más sobre interceptors para usar OAuth2 :D
Aris, tenes que hacer un video de como subir nuestras apps a la playStore!
Buenas Aris, me parece super buenos tus videos. Al final hiciste el tutorial de sacar la imagen y enviarlo al servidor? Es super interesante
si por favor tutorial con las imagenes!
Gracias por el contenido!
Desde que lleguemos a los 1000 en insta me pongo a ello!
maginifica explicacion
Muy buen vídeo :D
Vengo de tus videos de Android Kotlin desde cero, soy programador intermedio en laravel y estoy buscando un maestro como tu en android, pense en swift(muy carisimo), en react native(tedioso), me decidi por android kotlin , claramente me subscribi a tu canal y estoy pensando seriamente en ser parte de la membresia, ya tengo a otro youtuber, pero necesito saber que ofrece tu membresia,,saludos y muchas gracias por el contenido
gracias por tus videos crack!
Hola Aris, como siempre contenido de calidad, podrías hacer un video en el que se muestre como descargar y mostar archivos PDF desde una API usando MVVM y Hilt. Saludos
AristiDevs podrias hacer tutorial de como mandar achivos como videos, fotos, pdf, etc hacia una api con retrofit2 :)
Excelente video.
Hola!! cómo se podría hacer el método GET si en la petición recibimos varios Ids separados por comas ej: ...../tems?&ids=M1,M2
Cada video mejor, lo que no te puedo perdonar es que te guste el Capitán América.
hahahhaha, entre tú y yo... prefiero a iron man
muchas gracias por el video, me ha venido genial!
ojala pudieses explicar como guardar el token cuando haces login y usar ese mismo token para hacer llamadas a la API.
Muchas gracias por tus videos!
Para la segunda parte!
Hola Aris, una pregunta, si no quisiera tener o crear una nueva data class llamada GetAllDogResponse, InsertDogResponse, en lugar de eso tener un solo DogResponse que acepte una variable o resultado tipo T generico para luego poder hacerle el casting al response.body as T (lo que necesite), como se haria eso en kotlin?
estaría bien otro video en donde se manejen los códigos de error a nivel general por ejemplo el 401 ya que esto puede pasar en todos los servicios privados de una app, se crea algo así como un base response? suponiendo que el flujo siempre seria ir a refrescar el token y luego ahora si hacer el llamado al servicio, en general como se implementa eso?
Hola Aris, muy buenos videos, respecto a las llamadas POST podrias agragar como seria pasar un JSON y tambien un JSON dentro de un parametro como sy fuera el value, me refiero a algo asi ".../test&data={user:"myuser", psw:"123"}"
Hola Aris excelente vídeo... si puedes hacer el vídeo completo de subir la imagen seria genial 😁. Gracias por los tutos. Y vaya que también ando loco buscando como implementar un toolbar en fragments con el botón atrás, así que si puedes hacer uno te lo agradecería mucho...
En Kotlin puedes utilizar gráficos de navegación para realizar esa tarea y el gráfico se encarga de mostrar o no el botón de atrás e incluso le puedes colocar transiciones entre fragmentos. Espero te sea de utilidad
@@sparkusful tienes algún ejemplo o donde pueda encontrar documentación?
Te dejo un enlace con una introducción a los gráficos de navegación que espero te sirva developer.android.com/guide/navigation/navigation-design-graph?hl=es-419
@@sparkusful Muchas gracias por tu aporte...
Muy buen video como siempre unas cosa el sonido se escucha muy bajito.
un saludo
lo mas interesante seria un multipart con un video música imagen gif o archivos jejej saludos suscrito
seria mega cool lo de las imagenes
Admirable
Buen video Arist, tengo una duda, mi API solo trae resultados por id... como puedo traer toda la información y no de 1 en 1 ?
Hola Aris! Gracias por tus videos, me ayudan muchisimo!
Sabes donde puedo encontrar informacion que me ayude a entender mejor la manipulacion de las URL con retrofit? Siempre que pruebo llamadas con parametros adicionales como access-keys o querys, me crashean las app y creo que es por hacer una mala request, gracias y saludos!
Saludos, muy buen video, tengo usa duda, como arreglo el error de socket timeout que sucede cuando el usuario no tiene internet, dónde obtengo la excepción si eso ocurre?
Pd. Amigo te faltó agregar este video a la lista de reproducción de Retrofit 2
si estaria chebre el ejemplo desde 0 con una imagen tomada por la camara en la misma app y mandarla a alguna api
Tengo una duda, al utilizar @Multipart como saben los campos image y myExample a que data class apunta?. Como se haría para indicar eso (en el ejemplo no se muestra una data class que contenga los campos image y myExample) pero suponiendo que fuera esta: data class Example (val image:String, myExample:String), como se haría?. Muchas Gracias
Multipart es para mandar la foto, no para recibirla
Con todo el cariño del mundo pero no hace falta que digas 3 veces en cada video lo de "Suscríbete", a todo el mundo le gusta la pasta pero no seas tan pesado chaval. Gracias por los videos.
¿Pero te suscribiste?
En tu blog del curso en el capítulo de fragmentos mencionas que estos ya no se usan tanto.
O sea que si empiezo una app desde cero y quiero hacerla con mvvm debo hacerla solamente con activities?
O puedes detallar un poco más eso que mencionas que los fragmentos ya no se usan tanto? Y si es así entonces también dejamos atrás jetpack navigation?
Saludos
Capaz que en su momento cuando el hizo el blog no de usaban, pero si se siguen usando.. Son súper útiles.
Hola, una pregunta para una app para producción si uso una api gratuita es ilimitado osea que si a la app le llega a ir bien y tiene muchos usuarios haciendo peticiónes diariamente podría crashear o algo?
Pues depende de las limitaciones que te ponga dicha api
Para los query se envian asi
/example?param1=XXXx¶m2=XXXX empieza con un "?"
Lo pone automáticamente la etiqueta query
Hola AristiDevs sigo cada uno de tus videos y son excelentes!!! pero tengo un problema.. como hago para leer un API con certificado SSL .. me sale error!!.. porfavor podrias hacer un video sobre el uso de SSL con retrofit, ejemplos.. por favor!!
Con certificado SSL no hay que hacer nada, es al contrario, sin certificado si hay que toquetear
has el video de descargar archivos y de subir archivos con retrofit completo, con buenas practivas y barra de progreso
Cuando lleguemos a los 1000 en insta!
@@AristiDevs hazlo enseguida.
muy buenos videos.. por lo que vi me voy a entretener bastante por aca.. mucho mejor que ese curso pedorro de udemy que esta mas abandonado que viejo en asilo... ojala pueda encontrar lo que busco y una buena fuente de aprendizaje.. entiendo muy basico de programacion.. pero apretando botones voy llegando a buen puerto.. me gustaria hacerte una pregunta por privado cuando tengas unos minutos.. muy buen material... ni bien tenga el prime, me suscribo en twitch tmb...
Buenas, no puedo dar soporte personalizado, pero te invito a unirte al canal de discord (tienes todos los links en aristi.dev) y ahí debatimos todos los temas juntos!
el volumen está bajito :(
Algunas veces veo que el retorno de la ApiService es Call y otras veces es Response, cuál es la diferencia entre estas dos clases?.
Yo tengo una duda, que puede que sea una idotez. Pero cuando el api devevuelve un json con muchos nodos en plan {a:"a", b:"b", c:"c"... z:'z') y yo sólo necesito a y z. Cómo le digo que me parseé esos dos únicos elementos. Creo que en el tutorial anterior no lo hiceste y lo intenté y no salí bien parado. Y seguro qeu es una idotez. Gracias y enhorabuena por el currazo.
Pues realizas solo eso.
Te da algun error?
para hacer eso debes crear un data class que contenga: @SerializedName("a") val a: String? = null, @SerializedName("z") val z:String? = null con esto estás sacando los valores que te interesan y uniéndolos en un único objeto que sería tu data class. Espero haya sido claro jeje
Debes mapear bien tus respuestas en tu data class solo lo que te interesa. Lo que no puedes omitirlo.
@@ezequielpirola6169 buena
Te recomiendo que utilices GraphQl mediante apollo para kotlin
hola, quiero colaborar contigo en un video, pero no se como contactarte
Twitter por ejemplo!
@@AristiDevs me puedes decir tu whasap o teleg?
Aplicar no, postular. Si van a hablar en inglés di 'Apply'
hola aristidevs, descargue la app desde los comentarios pero no funciona, arroja el error okhttp3.internal.http2.StreamResetException: stream was reset: PROTOCOL_ERROR
me podrias ayudar?
Una vez mas, qué estará mal aquí?? solo me sale error de "E/AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-1
SU función tampoco funciona, mismo error
private fun detData(text: String, tipo : String) {
CoroutineScope(Dispatchers.IO).launch {
val response = getRetrofit().create(APIService::class.java).getInvoice(ParamBody(text, tipo)).execute()
val invoice = response.body() as InvoiceResponse?
withContext(Dispatchers.Main) {
try {
if (response.isSuccessful) {
if (invoice?.success == "true") {
println(invoice)
}
} else {
showErrorDialog()
}
Toast.makeText(applicationContext, "Ok", Toast.LENGTH_SHORT).show()
} catch (e: HttpException) {
Toast.makeText(applicationContext, "Exception ${e.message}", Toast.LENGTH_SHORT).show()
} catch (e: Throwable) {
Toast.makeText(applicationContext, "Ooops: Something else went wrong", Toast.LENGTH_SHORT).show()
}
}
}
}