StringRequest 参数有大小限制吗?

Is there a size limit of StringRequest parameters?

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

当我直接尝试发送 base64 字符串时,我得到 'Unexpected response code 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 可能存在大小限制,或者可能根本没有大小限制。

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

我也遇到了同样的问题。所以,这取决于服务器配置。他们设置了 post 获取数据的限制

例如

//最大尺寸

post_max_size 20M

所以,您需要与您的后台人员交谈或发送压缩图像。

我发现这个问题可能是由于 Apache 限制了客户端 HTTP request-line(例如)的大小设置和 HTTP 请求 header 字段大小引起的。因此,如果请求 URL 太大,您将需要增加默认值。 增加 Apache 配置文件中的 URI 长度限制(默认为 /etc/httpd/conf/httpd.conf ):

LimitRequestLine 16380

LimitRequestFieldSize 16380