Anatoly
Есть 2 стула
Влад
Есть 2 стула
так бы сразу и начинал..
Andrei
Всем привет. Есть вот такой вот ответ от сервера в виде картинки(в хроме с помошью stetho отображается картинка). Какой типо ответа нужно поставить в Retrofit интерфейсе, чтобы можно было получить ее?
Andrei
а не проще напрямую сделать http-запрос?
Можете объяснить, что именно вы имеете в виду? Сейчас делается запрос, в него добавляется авторизационный токен. Сейчас это выглядит так: https://someUrl/someMethod/picture.jpg Метод GET
Anton
В зависимости от того что придет, построить свой класс модели. Его и ставить как ответ ретрофита
Gregory
я имею в виду не использовать никаких библиотек, а просто отправить HTTP запрос руками
Anton
всяко удобнее чем через курл
Kanstantsin
я так понимаю человеку не это надо
Gregory
а почему нельзя просто через okhttp/URLConnection это сделать?
Anton
а почему нельзя просто через okhttp/URLConnection это сделать?
Потому что автор вопроса не знает что ему приходит, видимо. Только картинку через стетхо
Kanstantsin
что-то типо header: application/json указать
Мумитроль
Kanstantsin
типо чтобы формат возращаемых данных менять
FromSi
Если картинку хочешь получить, то Picasso :D
Kanstantsin
может же и raw прийти
Мумитроль
Картинку как вообще использовать в приложении будете?
Микола
Glide
Микола
Fresco
Kanstantsin
ну пикассо ок, если есть прямая ссылка на картинку
Gregory
HTTPGetRequestFactoryFactoryProviderModel
Andrei
есть Glide, но он почему-то не грузит картинку, потому что метод требует авторизационный токен. Я подкидываю этот токен с помощью GlideUrl, но это нифига не работает. В ответ получаю от Glide FileNotFoundException, но я точно знаю, что картинка там есть, потому что получал ее и без авторизации
Kanstantsin
в хидеры или параметрами какими и т.д.
Kanstantsin
то есть может ты вешаешь токен в параметры запроса, а надо в хидер и т.д.
Kanstantsin
в okhttp надо интерцепторы юзать
Kanstantsin
как я понимаю
Kanstantsin
тоже вариант
Andrei
val headers = LazyHeaders.Builder().addHeader("Authorization", accessToken).build() val glideUrl = GlideUrl(url, headers) да, токен в header
Kanstantsin
picasso так юзает okhttp клиент внутри себя, можно взять его и в него поставить interceptor который будет токен подкидывать в хидеры запросов
Kanstantsin
val headers = LazyHeaders.Builder().addHeader("Authorization", accessToken).build() val glideUrl = GlideUrl(url, headers) да, токен в header
ну вглядит ок, нужно использовать charles или фидлер тогда, и смотреть возвращает ли запрос картинку или что
Kanstantsin
и если нет то смотреть почему
Andrei
да я бы с удовольствием подкидывал токен через интерцептор, но не нашел норм инфы как прикрутить его к глайду
Anton
val headers = LazyHeaders.Builder().addHeader("Authorization", accessToken).build() val glideUrl = GlideUrl(url, headers) да, токен в header
1. Тебе надо проверить что твой токен не протух 2. Как сказали выше, тебе нужно проверить что твой токен уходит в запросе с картинкой, через какой-нибудь анализатор трафика
Andrei
Такой же код и все работает у меня
да я в дебаге смотрел, что с токеном в заголовке все ок, но в ответ ловлю ошибку
Sergey F
Kanstantsin
какую ошибку ?
Anton
да я в дебаге смотрел, что с токеном в заголовке все ок, но в ответ ловлю ошибку
Скопируй запрос который отправляется, вставь его в постман Если картинка не прийдет, то тебе к серверу твоему в гости надо
Kanstantsin
ловишь
Kanstantsin
именно в запросе какая ошибка приходит с сервака
Kanstantsin
не FileNotFound это уже эксепшен андройдовский
Kanstantsin
а что ответил сервак в response
Kanstantsin
можно и в дебаге отловить на худой конец, если влом ставить charles или фидлер
Andrei
какую ошибку ?
я повесил listener на глайд, там приходит GlideException с текстом, что произошел FileNotFoundException, но опять таки, картинка приходит нормально, если я делаю запрос не через глайд
Kanstantsin
нужно смотреть что внутри приходит, погляди может можно повесить какой калбэк чтобы видеть responseBody например
Kanstantsin
не сконверченный уже
Kanstantsin
чтобы увидеть какой код, и т.д.
Микола
глянь запросы через андроид profile r
FromSi
сейчас посмотрю
Хорошо, походу я чего-то не понимаю... 1. Зачем ему token для Glide, если картинка показывается и без token'a? 2. Если нужно картинки загружать, то почему бы не попробовать Picasso (Он и мало весит и для картинок как раз)?
Andrei
Огромное всем спасибо за советы, вы очень помогли! Больше всего помог тот, кто посоветовал посмотреть запросы через андроид profiler, потому что я долбился в глаза и забыл вызвать функцию, которая формирует токен особым образом из "сырого" токена. В профайлере я это заметил. Сейчас все ок) Еще раз спасибо)
Артем
Добрый день! Хочу создать простенькое приложение, где будет обычный список друзей в вк (имя и аватарка). В главной активити нужно ввести логин и пароль, после чего вывести список друзей. Со списком вроде все понятно, но не могу разобраться как выполнить вход в аккаунт под своим логином и паролем. Подскажите пожалуйста куда копать, что использовакть?
Gregory
если её вообще всё ещё дают
Артем
а как тогда можно сделать?(
Mike
оф. приложению наверняка дают ;)
Mike
а как тогда можно сделать?(
https://github.com/TieToGather/VkAuth
Gregory
а как тогда можно сделать?(
private void openLogin(){ getPackageManager().getApplicationInfo("com.vkontakte.android", 0); Intent intent=new Intent("com.vkontakte.android.action.SDK_AUTH"); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.putExtra("scope", "тут права через запятую"); intent.putExtra("client_id", тут твой id приложения); startActivityForResult(intent, APP_RESULT); } в ответ в onActivityResult приходит токен в экстре access_token и id пользователя в user_id
Артем
всем спасибо, буду разбираться!
Gregory
ещё есть такая готовая активити для авторизации через браузер, в качестве фолбэка
Gregory
из одного моего проекта за 5 минут
Артем
спасибо большое, посмотрю!👍
Roman
Кто знает почему может не скролиться превьюшка вью в студии на вкладке текст? на вкладке дизайн все отлично скролится раньше и на вкладке текст скролилось