首页 > 解决方案 > StringRequest 参数有大小限制吗?

问题描述

我想使用 Volley StringRequest 将 base64 编码图像和一些文本上传到我的网络服务器。

当我直接尝试发送 base64 字符串时,我得到“意外的响应代码 503”,但是当我压缩图像然后对其进行编码时,它工作得很好。问题是我不知道为什么在发送到服务器之前我必须压缩我的图像,我应该压缩多少,或者有没有其他方法可以在不压缩的情况下发送它。

base64Encode我称之为完美工作的功能:

public String getStringImage(Bitmap bitmap){
        ByteArrayOutputStream baos=new  ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG,50, baos);
        byte [] b=baos.toByteArray();
        String temp= Base64.encodeToString(b, Base64.DEFAULT);

        return temp;
    }

base64Encode功能不起作用/给出 503 错误:

public String getStringImage(Bitmap bitmap){
        ByteArrayOutputStream baos=new  ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG,100, baos);    
        byte [] b=baos.toByteArray();
        String temp= Base64.encodeToString(b, Base64.DEFAULT);

        return temp;
    }

我想让你考虑的线是:

bitmap.compress(Bitmap.CompressFormat.JPEG,50, baos);

当我将此压缩参数更改为 100 时,它的抛出错误。

我认为在发出 POST REQUEST 时可能存在大小限制,或者 Volley可能存在大小限制,StringRequest或者可能根本没有大小限制。

<--- 更新 ---> 如果问题真的是大小限制,那么我如何计算压缩后的 JPEG 大小bitmap.compress (Bitmap.CompressFormat.JPEG, 50, baos)而不实际压缩它?或者当我使用 15 作为压缩参数时,我如何知道我是否可以充分压缩我的图像?

标签: javaandroidandroid-volley

解决方案


我也面临同样的问题。所以,这取决于服务器配置。他们为帖子设置了获取数据的限制

例如。

//最大尺寸

post_max_size 20M

因此,您需要与您的后端人员交谈或发送压缩图像。


推荐阅读