Думаю, что нужно использовать плагин для студии JSON to Kotlin object, чтобы автоматически получать дата класс, тем более не будет вот таких проблем типа username/userName, и соответственно когда большой класс тоже удобнее так. suspend к функции добавляется не из-за того, что она вызывается из корутины, а из-за того, что скорее всего аннотация ретрофита где-то вызывает suspend функцию свою, которая должна вызываться из suspend функции, объявленной пользователем. То есть из suspend функции обычную вызвать можно, а наоборот нет. Ну и очепятка в binding.usarename)
Пока не поработаешь над реальным проектом, видимо, особо не поймешь разницу между типами запросов и что в каком случае надо использовать. В прошлом видео вы говорили, что POST создает новые данные, а с помощью GET происходит получение информации. Но здесь мы используем POST, чтобы получить информацию, а не создать ее🤔
Мы используем потому что это симулятор и в API указан метод который нужно использовать, там указан метод POST так как в коде так прописано на сервере. Post тоже получает данные обратно так как когда записываем или редактируем нам всегда приходит ответ. Можете легко почитать про разницу обоих методов в интернете для лучшего понимания. Можно использовать любой из них но есть отличии, я объяснил для чего каждый предназначен а там уже зависит от логики
через месяц запускаю, при авторизации появилась ошибка: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. никто не сталкивался?((
у меня на Xiaomi9 выдает: I/FeatureParser: can't find cepheus.xml in assets/device_features/,it may be in /system/etc/device_features и avc: denied { read } for name="u:object_r:vendor_displayfeature_prop:s0" dev="tmpfs" ino=26180 scontext=u:r:untrusted_app:s0:c183,c257,c512,c768 tcontext=u:object_r:vendor_displayfeature_prop:s0 tclass=file permissive=0 чтобы это значило??? (я начинающий поэтому не понимаю)
копируете любым способом, а в эмулятор уже вставляете либо нажав на подсказку, которая выйдет, когда щёлкните на поле, либо на верхней части клавиатуры появится подсказка
SUPER.Sergey skaji pojalusta budet li uroki po postgresql sozdat baza dannix zapisovat schitovat .Na kotline kak realizovat eta dela. Estli znakom sdelay seriya urokov po etoy teme toje estli smojesh.Ti obyasnish prostimi slovami ato muchayus uje mesyats
Ну как в кино, в начале фильма стоит мужик на краю обрыва в одних трусах, а после уже фильм начинается, и смотря фильм понимаешь как он туда попал😂 я так же сделал вырезав кусок где проверяем как работает и вставил его впереди чтоб было видно что на уроке сделаем😅
@@NecoRuChannel тогда ещё надо в конце вставлять что-то типа этого же, только ещё сверх мощнее, типа идёт урок, учимся учимся, в конце результат, а в самом конце отрывок того, что мы могли бы научиться только через года, как стимул в будущее, что мы сможем делать, если не забросим всё это)
Не получается, переписывал строчка в строчку с видео, но выдаёт такую оишбку. E/AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-1 Process: com.example.retrofitlesson, PID: 7145 retrofit2.HttpException: HTTP 400 at retrofit2.KotlinExtensions$await$2$2.onResponse(KotlinExtensions.kt:53) at retrofit2.OkHttpCall$1.onResponse(OkHttpCall.java:161) at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:539) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:919) Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@23d5e26, Dispatchers.IO]
В мене така сама проблема буда, помогло те що я не такі самі назви вводив як в документації змінних в data class, для прикладу я в data class User, створив не firstName а firsname і ця одна буква зіграла важливу роль, так само в data class AuthRequest я ввів назву змінної login а не username це було також помилко, зважай на це)
@@golohilen956 Спасибо. Но причина оказалась банальной. Тестирую на реальных смартфонах (ПК слабоват и не тянет виртуальный ). На андроид 6.0 выдает, что произошла ошибка и сразу вылетает. На смартфоне с андроид 7.0 все прекрасно работает. Ещё раз спасибо, что откликнулись.
Большое спасибо за уроки по Retrofit! Очень полезно. Ждём с нетерпением так же серию уроков по Coroutine и Dagger2 / Koin ))) Отличного вам дня!
и Hilt
Поклон! 😊 Очень хорошая база. Теперь понятно что и где "рыть".
С такими видеороликами изучать новые технологии одно удовольствие)
Спасибо Учитель за вашу работу и замечательные уроки с отличным объяснением!
Надо памятник поставить ! спасибо, крутые уроки
Большое спасибо! Прекрасного дня!
Спасибо, за такое понятное объяснение! Пожалуйста не останавливайтесь!
Спасибо большое за такие подробные уроки! Очень здорово объясняете)
Спасибо за урок!
Спасибо, отличный урок
Большое спасибо за урок!!!!
Комментарий для продвижения канала👍
Спасибо за видео!
Огромное спасибо, это очень полезно. Чуть позже посмотрю.
Благодарю за урок
Спасибо вам за подробное объяснение!
Давно учусь у вас и как раз нужно было сделать авторизацию по ретрофиту, надеюсь будет видео по регистрации через ретрофит и мввм)
Думаю, что нужно использовать плагин для студии JSON to Kotlin object, чтобы автоматически получать дата класс, тем более не будет вот таких проблем типа username/userName, и соответственно когда большой класс тоже удобнее так.
suspend к функции добавляется не из-за того, что она вызывается из корутины, а из-за того, что скорее всего аннотация ретрофита где-то вызывает suspend функцию свою, которая должна вызываться из suspend функции, объявленной пользователем.
То есть из suspend функции обычную вызвать можно, а наоборот нет.
Ну и очепятка в binding.usarename)
Большое спасибо!
Пока не поработаешь над реальным проектом, видимо, особо не поймешь разницу между типами запросов и что в каком случае надо использовать. В прошлом видео вы говорили, что POST создает новые данные, а с помощью GET происходит получение информации. Но здесь мы используем POST, чтобы получить информацию, а не создать ее🤔
Мы используем потому что это симулятор и в API указан метод который нужно использовать, там указан метод POST так как в коде так прописано на сервере. Post тоже получает данные обратно так как когда записываем или редактируем нам всегда приходит ответ. Можете легко почитать про разницу обоих методов в интернете для лучшего понимания. Можно использовать любой из них но есть отличии, я объяснил для чего каждый предназначен а там уже зависит от логики
@@NecoRuChannel спасибо!
♥♥♥
Можно еще урок по обзорный recyclerview как в фрагментах работает и тд
через месяц запускаю, при авторизации появилась ошибка: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
никто не сталкивался?((
спасибо огромное!! пробовал место Picasso Glide почему-то выдает ошибку подчеркивает with и может библиотека глайд или retrofit с корутинами не дружит
Самое сложное в ретрофит это если я не ошибаюсь скачивание файлов с сервера будут ли такие уроки?
Привет, да будут
Для жителей Крыма информация. Нужен впн, для использования базы
В эмуляторе все проходит гладко, а через телефон нет. В чем может быть проблема?
у меня на Xiaomi9 выдает: I/FeatureParser: can't find cepheus.xml in assets/device_features/,it may be in /system/etc/device_features
и avc: denied { read } for name="u:object_r:vendor_displayfeature_prop:s0" dev="tmpfs" ino=26180 scontext=u:r:untrusted_app:s0:c183,c257,c512,c768 tcontext=u:object_r:vendor_displayfeature_prop:s0 tclass=file permissive=0 чтобы это значило??? (я начинающий поэтому не понимаю)
Добрый день, можно по этим урокам практиковаться в compose?
Привет, да, но только бизнес логику. А передача на экран данных немного другая, я запишу уроки по этому. Но большая часть та же
@@NecoRuChannel спасибо большое, очень помогают ваши уроки
@@АнтонГ-р4и и вам спасибо за поддержку!
Привет!
Как скопировать текст со страницы и хроме прямо в эмулятор? Не смог найти ответы в интернете. ctrl+c / +v не работают почему то
копируете любым способом, а в эмулятор уже вставляете либо нажав на подсказку, которая выйдет, когда щёлкните на поле, либо на верхней части клавиатуры появится подсказка
а как сделать без корутин ?) я удалил корутины и у функций suspend теперь при попытки ввести логин и пароль приложение крашиться
На следующем уроке покажу как можно сделать без корутин с помощью Call
SUPER.Sergey skaji pojalusta budet li uroki po postgresql sozdat baza dannix zapisovat schitovat .Na kotline kak realizovat eta dela.
Estli znakom sdelay seriya urokov po etoy teme toje estli smojesh.Ti obyasnish prostimi slovami ato muchayus uje mesyats
что это было в самом начале ролика?
Ну как в кино, в начале фильма стоит мужик на краю обрыва в одних трусах, а после уже фильм начинается, и смотря фильм понимаешь как он туда попал😂 я так же сделал вырезав кусок где проверяем как работает и вставил его впереди чтоб было видно что на уроке сделаем😅
@@NecoRuChannel ха-х, забавно)
@@NecoRuChannel тогда ещё надо в конце вставлять что-то типа этого же, только ещё сверх мощнее, типа идёт урок, учимся учимся, в конце результат, а в самом конце отрывок того, что мы могли бы научиться только через года, как стимул в будущее, что мы сможем делать, если не забросим всё это)
@@АлександрАлексеев-ы8ь например показать экран экран телефона где сотни пропущенных звонков от крупных IT компаний которые умоляют работать на них😂😂
@@NecoRuChannel пхахах, угарно, особенно если ролик был о создании приложения, как блокировать нежелательные звонки неизвестных номеров 😂😂
Не получается, переписывал строчка в строчку с видео, но выдаёт такую оишбку.
E/AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-1
Process: com.example.retrofitlesson, PID: 7145
retrofit2.HttpException: HTTP 400
at retrofit2.KotlinExtensions$await$2$2.onResponse(KotlinExtensions.kt:53)
at retrofit2.OkHttpCall$1.onResponse(OkHttpCall.java:161)
at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:539)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@23d5e26, Dispatchers.IO]
Решили ?
@@ГГг-й4щ Да, спасибо! Сейчас пытаюсь понять как делать авторизацию с помощью токена, чтоб после успешной авторизации перекидывало на новый экран.
@@АлександрШабашов-ц4ь У меня та же проблема. Поделитесь - как решили.
В мене така сама проблема буда, помогло те що я не такі самі назви вводив як в документації змінних в data class, для прикладу я в data class User, створив не firstName а firsname і ця одна буква зіграла важливу роль, так само в data class AuthRequest я ввів назву змінної login а не username це було також помилко, зважай на це)
@@golohilen956 Спасибо. Но причина оказалась банальной. Тестирую на реальных смартфонах (ПК слабоват и не тянет виртуальный ). На андроид 6.0 выдает, что произошла ошибка и сразу вылетает. На смартфоне с андроид 7.0 все прекрасно работает. Ещё раз спасибо, что откликнулись.
Всё понятно, спасибо!
все очень просто и понятно объясняется) спасибо большое)