BasicNetwork.performRequest:意外的响应代码413

时间:2019-06-04 05:11:10

标签: android android-volley

尝试将图像作为 Base64 上传到服务器并收到响应:

  

BasicNetwork.logSlowRequests:r request = [lifetime = 6927],[size = 497],   [RC = 413],[retryCount = 0] BasicNetwork.performRequest:意外    SERVER-URL

的响应代码413

1 个答案:

答案 0 :(得分:0)

  

HTTP响应代码:413有效载荷过大

     

请求实体大于服务器定义的限制;服务器可能会关闭   连接或返回Retry-After标头字段。

因此,解决此问题的方法是先将图像压缩到可靠的大小,假设它可以为1 MB,然后再上传到服务器。

这是我创建的用于将图像的压缩版本作为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());
        }
    }