为什么要用大jsonobject启动stackoverflower?

toe95027  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(385)

我正在尝试用android网络库(okhttp)发送大字符串值(base64格式的照片)。

JSONObject jsonObj= new JSONObject();

 JSONArray photosBase64JsonArray = new JSONArray();
            for (String photoBase64:myPhotosBase64
            ) {
                photosBase64JsonArray.put(photoBase64);
            }

jsonObj.put("photos", photosBase64JsonArray);

  AndroidNetworking.post(serverAddress)
                    .addJSONObjectBody(jsonObj)
                    .setPriority(Priority.IMMEDIATE)
                    .addHeaders("myHeader", "testing")
                    .build()
                    .getAsJSONObject()....

我得到一个例外:

java.lang.StackOverflowError: stack size 8192KB
        at java.lang.StringBuilder.append(StringBuilder.java:203)
        at org.json.JSONStringer.string(JSONStringer.java:354)
        at org.json.JSONStringer.value(JSONStringer.java:261)
        at org.json.JSONObject.writeTo(JSONObject.java:733)
        at org.json.JSONObject.toString(JSONObject.java:701)
        at com.androidnetworking.common.ANRequest$PostRequestBuilder.addJSONObjectBody(ANRequest.java:1394)

如何发送很长的字符串值?

h9a6wy2h

h9a6wy2h1#

使用了带有jackson解析器的快速android网络,并解决了以下问题:)

implementation 'com.amitshekhar.android:jackson-android-networking:1.0.2'

AndroidNetworking.setParserFactory(new JacksonParserFactory());

相关问题