BasicNetwork.performRequest: неожиданный код ответа 413 - PullRequest
0 голосов
/ 04 июня 2019

Попытка загрузить изображение как Base64 на сервер и получение ответа:

BasicNetwork.logSlowRequests: r запрос = [время жизни = 6927], [размер = 497], [RC = 413], [retryCount = 0] BasicNetwork.performRequest: Неожиданно код ответа 413 для SERVER-URL

1 Ответ

0 голосов
/ 06 июня 2019

Код ответа HTTP: 413 Слишком большая полезная нагрузка

Объект запроса превышает пределы, определенные сервером; сервер может закрыть подключиться или вернуть поле заголовка Retry-After.

Таким образом, решение этой проблемы состоит в том, чтобы сначала сжать изображение до надежного размера, допустим, оно может быть 1 МБ, а затем загрузить на сервер.

Вот метод, который я создал для извлечения сжатой версии изображения в виде File объекта: -

private File getCompressedFile(Context activity, String filePath) {
        final long FILE_MAX_SIZE = 1024L * 1024L;
        File file = new File(filePath);
        if (file.isFile() && file.length() < FILE_MAX_SIZE) 

            return file;

        else {
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inPreferredConfig = Bitmap.Config.ARGB_8888;
            Bitmap bitmap = BitmapFactory.decodeFile(filePath, options);
            bitmap = Bitmap.createScaledBitmap(bitmap, bitmap.getWidth() / 2, bitmap.getHeight() / 2, false);
            File output = new File(activity.getCacheDir(), "tempUploadFile.jpg");

            try {
                if (!output.isFile())
                    //noinspection ResultOfMethodCallIgnored
                    output.createNewFile();

                OutputStream fOutput = new FileOutputStream(output);
                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOutput);
                fOutput.flush();
                fOutput.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

            return output.length() < FILE_MAX_SIZE ? output : getCompressedFile(output.getAbsolutePath());
        }
    }
...