如何在http连接上编写大型JSON数组

时间:2014-12-17 07:46:01

标签: java android

我有一个JSON数组,它还包含许多JSON对象,我希望将这个JSON数组作为字符串发布在http post连接上。我的问题是,当我将JSON数组转换为字符串时,字符串变量只保存JSON数组数据的子集(由于String变量的大小限制)。结果我发布了不完整的JSON数组。在http连接上发布大型JSON数组的解决方案是什么?下面的代码将JSON数组转换为String。

JSONArray jsonArray = new JSONArray();
jsonArray .toString();

1 个答案:

答案 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。使用此方法,您的字符串变量在任何时候都只包含一条记录。