Ответы пользователя по тегу Java
  • Как игнорировать статус коды 4хх?

    Исходя из документации, в ErrorListener подаёт я объект с информацией об ответе сервера: https://javadoc.io/doc/com.android.volley/volley/1...

    И в этом объекте есть поле data: https://javadoc.io/doc/com.android.volley/volley/1...

    Полагаю в нём есть всё, что тебе нужно для парсинга.
    Ответ написан
    Комментировать
  • Как отправить файл на фтп сервер?

    FTPClient con = null;
    boolean result = con.storeFile("/example.png", in);

    Ты объявил переменную с null значением и тут же вызываешь метод в несуществующем объекте, вот и неудача номер раз.
    Ответ написан
  • Как организовать юзер-сервис в виде микросервиса?

    отдельный микросервис чтобы он раздавал токены, авторизовал, следил за ролями и пр.

    Это работа для сервера авторизации, есть достаточно хороших готовых решений типа Keycloak которые достаточно легко интегрировать.

    Взаимодействие фронт-бэк происходит так:
    1. Фронт перенаправляет пользователя в Keycloak для авторизации
    2. Пользователь авторизовывается
    3. Keycloak возвращает пользователя обратно на фронт с токеном в JWT формате и подписью (JWS)
    4. Фронт делает авторизованные запросы в бэк с помощью этого токена
    5. Бэк, используя публичный ключ из Keycloak, валидирует подпись токена и убеждается, что он не просрочен
    6. Базовая информация о пользователе, Scope и его Roles находятся в токене, их можно использовать для валидации доступа к эндпойнтам бэка и понимать, кто авторизован
    Ответ написан
    5 комментариев
  • Почему scanner пропускает некоторые строчки в коде?

    Дело в том, что Scanner#nextInt считывает только цифровое значение без перехода на новую строку. Таким образом выходит, что последующий вызов Scanner#nextLine видит новую строку за счёт того, что ты нажал Enter вводя число.

    Используй для всех инпутов Scanner#nextLine и конвертируй полученную строку в нужный тип.
    System.out.println("Введите код путевки");
    l[p].code = Integer.parseInt(scanner.nextLine());
    Ответ написан
    2 комментария
  • Как поменять задний фон ProgressBar Android?

    Тебе нужно создать полностью кастомизированный ProgressBar как описано тут, убрав фон.
    Ответ написан
    Комментировать
  • Как найти хэш sha1 работающий как в php?

    DigestUtils из Apache Commons Codec.
    DigestUtils.getSha1Digest("test")

    Для кодирования в Base64 смотри встроенный класс (работает начиная с Java 8).
    Ответ написан
    Комментировать
  • Как сделать рандомное появление textview на экране?

    Задача не интересная, скорее до предела банальная :) Тебе нужен какой-нибудь FrameLayout, в который с помощью метода #addView ты вставляешь созданный в коде TextView и меняешь абсолютные XY-координаты.
    FrameLayout frameLayout = findViewById(R.id.frame);
    TextView textView = new TextView(getContext());
    frameLayout.addView(textView);
    
    // С помощью класса Random сгенерируй случайные координаты в пределах
    // доступного пространства на экране
    textView.setX(100);
    textView.setY(100);

    Код писался с головы с целью донести идею, а не предоставить полное решение.
    Ответ написан
    Комментировать
  • Нужно ли применять Spring Security на сервере, если конектиться андроид приложение?

    Spring Security нужен в случае, если ты планируешь реализовать авторизацию. Если авторизации не будет и все данные, которые приложение будет запрашивать, публичные, то тебе оно не нужно.
    Ответ написан
  • AlertDialog срабатывает только со второго раза, почему?

    В комментарии ты показал, как вызывается метод settingCount:
    <item
        ...
        android:onClick="settingCount" />

    Тут и заключается проблема. Метод settingCount вызывается первым нажатием, в этом методе добавляется ещё один обработчик и только потом все последующие нажатия на кнопку уже обрабатываются им.

    Замени код метода на это:
    public void settingCount(MenuItem item) {
                    LayoutInflater layoutInflater = LayoutInflater.from(context);
                    View view = layoutInflater.inflate(R.layout.setting_dialog, null);
                    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
                    dialogBuilder.setView(view);
                    final EditText editTextString = (EditText) view.findViewById(R.id.editTextDialogString};    
                    dialogBuilder
                            .setCancelable(false)
                            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                                ///.....///
                            })
                            .setNegativeButton("Отмена",
                                    new DialogInterface.OnClickListener(){
                                       ///.....////
                                    });
                    AlertDialog alertDialog = dialogBuilder.create();
                    alertDialog.show();
        }
    Ответ написан
    1 комментарий
  • Расстояние от точки до местоположения на android?

    Тут не библиотеки искать нужно, а вспомнить геометрию, а конкретно тему про векторы. Вспоминай/ищи как из двух точек получить вектор а затем узнать длину этого вектора, это и будет расстояние. Формулы очень просты.
    Ответ написан
    1 комментарий
  • Заменит ли Kotlin Java в Android-разработке?

    Конкретно в мире Android разработки я бы сказал с большой долей вероятности Kotlin заменит Java, но это случится не так быстро. Постепенно, когда уверенность в Котлине закрепится, случится следующее:
    1. Официальная документация и примеры по Android-разработке от Google будут в двух вариантах.
    2. Официальная документация по умолчанию будет показывать примеры на Котлине, аналогично тому, как документация Angular.JS даёт примеры на TypeScript и предлагает опциональный вариант посмотреть вариант на чистом JavaScript.
    3. Android Studio начнёт создавать проект с поддержкой Kotlin по умолчанию
    4. В результате всего этого, новые Android-разработчики будут писать свой первый "Hello World" именно на нём
    5. Многие бывалые Java-разработчики начнут смотреть в сторону Kotlin с любопытством и поймут, что он решает многие проблемы Java и рано или поздно начнут на нём писать.

    Мне кажется, судьба Kotlin/Java в мире Android будет похожа на судьбу TypeScript/JavaScript в AngularJS и Swift/Objective-C в iOS разработке. Важным преимуществов Котлина является то, что он может сосуществовать с Java-кодом. Проекты, уже написанные на Java, не обязательно должны быть переписаны полностью с нуля. Словно по правилам естественного отбора в природе, он будет сосуществовать с Java, но завоевав любовь среди разработчиков у него будет больше шансов выжить и он начнёт внедряться всё больше и больше в проект до момента, когда в нём (проекте) не останется ни единого Java-класса.
    Ответ написан
    1 комментарий
  • Как посмотреть Cookie??

    Если посмотреть на заголовки, которые https://toster.ru/ возвращает, то увидим следующее:
    HTTP/1.1 200 OK
    Connection: keep-alive
    Content-Encoding: gzip
    Content-Type: text/html;charset=utf-8
    Date: Thu, 24 Aug 2017 17:14:51 GMT
    Keep-Alive: timeout=15
    Public-Key-Pins: pin-sha256="klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY=";pin-sha256="ATPF8U6AdEXM7aD9/PTAJldZj9jI6NWEvRGMbDJiN3g="; max-age=15552000
    Server: QRATOR
    Strict-Transport-Security: max-age=31536000
    Transfer-Encoding: chunked
    X-Powered-By: PHP/5.6.20-1+deb.sury.org~trusty+1

    Как видишь, Тостер не выставляет куки сразу. Это можно судить по отсутствию заголовка Set-Cookie. Было бы странно, если бы твой код нашёл какие-то куки.

    Замени https://toster.ru и toster.ru на https://github.com, например.
    Ответ написан
    5 комментариев
  • Как создать многоуровневый json?

    Нужно смотреть на JSON объекты ({ ... }) конкретно как на объекты в ООП, а не как на ассоциативный массив. Создай конкретные модели со всеми связями между собой, которые ты собираешься сериализировать в JSON. Если нужен список серверов/групп/клиентов, то используй именно список ([ ... ]) сериализированных моделей.
    Ответ написан
    Комментировать
  • Авторизация в android приложение через telegram?

    Алгоритм следующий:
    1. Пользователь нажимает "авторизоваться"
    2. Приложение отправляет запрос на сервер
    3. Сервер генерирует временный код и возвращает его приложению
    4. Приложение генерирует и открывает ссылку http://telegram.me/mybot?start=fe9Uing2sh (заменить название бота и сам код)
    5. Пользователь, перейдя по ссылке, отправит боту код

    После этого бот знает кого авторизовать и пользователь, вернувшись в приложение, должен быть авторизован.
    Ответ написан
    Комментировать
  • Каким образом отправить http request с параметром, аналогичным CURL?

    Это называют заголовком. Используй HttpURLConnection:
    HttpURLConnection сonnection = (HttpURLConnection) http_connect.openConnection();
    сonnection.setRequestProperty("Authorization", "newParameter12");

    И вместо http_connect.openStream() используй connection.getInputStream(). Только в реальных проектах стоит всё-таки воспользоваться готовым решением, а не плодить подобные велосипеды.
    Ответ написан
    Комментировать
  • Как правильно загрузить несколько файлов на сервер?

    Возможно ли организовать загрузку файлов в фоновом режиме, чтобы не зависало мобильное приложение.

    Возможно, любые долгие задачи типа HTTP-запросов, работа с файлами или БД должны происходить асинхронно, т.е. в отдельном потоке. Популярные HTTP-клиенты типа OkHttp позволяют это делать довольно легко. По умолчанию Android не должен разрешать делать HTTP-запросы из основного потока в принципе как раз для того, чтобы ты не допустил ошибку и не залочил интерфейс.

    Второй вопрос если это возможно то как правильно организовать переход на другой экран если например фоновый процесс загрузки файлов еще не завершен.

    Да, тебе нужно производить загрузку в сервисе, он работает в фоне.
    Ответ написан
    Комментировать
  • Как в Linux с помощью Java обнаружить подключенные USB-накопители?

    Смотри в сторону библиотеки usb4java. На сайте есть есть пример получения списка USB-устройств.
    Ответ написан
    Комментировать
  • MVC / MVP / MVVM / etc.?

    По-моему MVP отлично вписывается в текущее состояние разработки под Android, MVC реализовать сложновато из-за специфики. В целом, можно организовать всё самому, но есть и готовые решения типа Mosby MVP. На сайте библиотеки хорошо описаны принципы MVP и дополнительные полезные фичи, типа реализация LCE (Load-Content-Error) или сохранение данных чтобы не терять их при повороте экрана.

    Не пишут же реально везде findViewById...

    Это никак не относится к паттернам типа MV*, но проблему с этим бойлерплейтом решает Butterknife.
    Ответ написан
    1 комментарий
  • Как правильно вносить данные в БД?

    Так как локальные данные запрашиваются через свой API, то я бы это реализовал по похожему принципу, как работает кеширование. По запросу данных из вашего API, происходит проверка на то, как давно данные обновлялись. Если давно (регулировка времени на своё усмотрение), то происходит запрос на сторонний сервис и данные в локальном хранилище обновляются и сохраняется время последнего обновления. Минус этого подхода в том, что первый запрос в некий промежуток времени будет обрабатываться дольше из-за всех операций.

    Если не критично, можно обновлять данные в локальном хранилище после обработки запроса, дав клиенту "устаревшие" данные, чтобы избежать этой паузы. Следующим запросом клиент уже получит актуальные данные, т.к. к этому моменту они скорее всего успеют обновиться.

    Но для решения вашей проблемы нужно учитывать больше нюансов, это лишь общий ответ на основе информации в вопросе.
    Ответ написан
    Комментировать