将大字符串发送到Android中的服务器

时间:2014-11-20 15:44:21

标签: android json http

我想将15个图像发送到服务器,我使用json对象将这些图像转换为String,但是当我想发送它时,有些设备存在内存不足的异常,因为有一个大字符串。< / p>

我的图片越来越少320x400,我这样做:

首先,我创建一个jsonarray,每个图像都有一个对象:

for (int i = 0; i < images.size(); i++) {
        Mat aux = images.get(i);

        int cols = aux.cols();
        int rows = aux.rows();
        int elemSize = (int) aux.elemSize();

        byte[] data = new byte[cols * rows * elemSize];

        aux.get(0, 0, data);
        String dataString = new String(Base64.encode(data, Base64.DEFAULT));

        JSONObject obj = new JSONObject();
        try {
            obj.put("ROWS", aux.rows());
            obj.put("COLS", aux.cols());
            obj.put("TYPE", aux.type());
            obj.put("DATA", dataString);
        } catch (JSONException e) {
            e.printStackTrace();
        }

        arrayjson.put(obj);

    }

我创建了一个包含这个数组和另一个参数的json对象:

final JSONObject jsontoSend = new JSONObject();

        try {

            jsontoSend.put("USERNAME", user.username);
            jsontoSend.put("DATE", getCurrentDateandTime());
            jsontoSend.put("IMAGES", arrayjson);
            jsontoSend.put("TOTALIMAGES", images.size());


        } catch (JSONException e) {
            e.printStackTrace();
        }

最后,我尝试发送此对象:

StringEntity send = null;
        try {
            send = new StringEntity(jsontoSend.toString());
        httpPost.setEntity(send);
        } catch (UnsupportedEncodingException e1) {
            e1.printStackTrace();
        } catch (OutOfMemoryError e) {
            e.printStackTrace();
            return -2;
        }

如何发送这个大字符串??

由于

解决方案:

我解决了这个添加我的清单文件android:largeHeap="true"这个,android增加我的应用程序内存并运行正常

0 个答案:

没有答案