我有一个JSON数组,它还包含许多JSON对象,我希望将这个JSON数组作为字符串发布在http post连接上。我的问题是,当我将JSON数组转换为字符串时,字符串变量只保存JSON数组数据的子集(由于String变量的大小限制)。结果我发布了不完整的JSON数组。在http连接上发布大型JSON数组的解决方案是什么?下面的代码将JSON数组转换为String。
JSONArray jsonArray = new JSONArray();
jsonArray .toString();
答案 0 :(得分:2)
使用HttpURLConnection(http://developer.android.com/reference/java/net/HttpURLConnection.html) 开发人员明确说明
用于发送和接收数据的HTTP(RFC 2616)的URLConnection 在网上。数据可以是任何类型和长度。这个班可能是 用于发送和接收长度未知的流数据 提前。
发布查询的示例代码:
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
urlConnection.setDoOutput(true);
urlConnection.setChunkedStreamingMode(0);
OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream());
writeStream(out); // read data from db and write it to stream
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
readStream(in);
finally {
urlConnection.disconnect();
}
}
writeStream(OutputStream out) {
while (read all records from db) {
byte[] bytes = record.getBytes("UTF-8");
out.write(bytes);
}
}
在AsycTask doInBackground方法中使用上面的代码。从数据库中读取所有记录并添加到函数writeStream中的outputstream。使用此方法,您的字符串变量在任何时候都只包含一条记录。