StringRequest参数有大小限制吗?

时间:2019-06-21 11:19:59

标签: java android android-volley

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

当我直接尝试发送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的大小限制,或者根本没有大小限制。

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

2 个答案:

答案 0 :(得分:0)

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

例如。

//最大大小

  

post_max_size 20M

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

答案 1 :(得分:0)

我发现此问题可能是由Apache限制了客户端的HTTP请求行大小(例如)和HTTP请求标头字段大小的设置所导致的。因此,如果请求URL太大,则需要增加默认值。 增加Apache配置文件中的URI长度限制(默认为/etc/httpd/conf/httpd.conf):

LimitRequestLine 16380

LimitRequestFieldSize 16380