Android中JSONObject被截断

Android中JSONObject被截断,android,json,salesforce,Android,Json,Salesforce,我的应用程序正在尝试连接到Salesforce API并下拉其中存在的所有联系人。响应json对象有一个名为“totalSize”的键,表示33231条记录。当我试图以JSONArray的形式访问记录时,我的JSONArray只包含2000条记录。jsonobject可能在某个地方被截断。你能帮忙吗。下面是我的代码 JSONObject asJSONObject = new JSONObject(new JSONTokener(result)); int totalRecordsSize = I

我的应用程序正在尝试连接到Salesforce API并下拉其中存在的所有联系人。响应json对象有一个名为“totalSize”的键,表示33231条记录。当我试图以JSONArray的形式访问记录时,我的JSONArray只包含2000条记录。jsonobject可能在某个地方被截断。你能帮忙吗。下面是我的代码

JSONObject asJSONObject = new JSONObject(new JSONTokener(result));
int totalRecordsSize = Integer.parseInt(asJSONObject.getString("totalSize"));
System.out.println("JSON_RESULT_SIZE : "+totalRecordsSize);
JSONArray array = (JSONArray)asJSONObject.get("records");
int count = array.length();
System.out.println("JSON_ARRAY_SIZE : "+count);

谢谢

通常,当您的服务器配置为(可能是默认情况下)响应有限数量的数据以响应web调用时,会出现此类问题。例如,如果您使用的是ASP.NETwebservice,则默认Json响应长度限制为100kb。但是,您可以通过简单地增加web.config中的响应长度来覆盖此限制:

<system.web.extensions>
    <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="5242880"/>  <!-- 5MB -->
      </webServices>
      <scriptResourceHandler enableCompression="true" enableCaching="true" />
    </scripting>
</system.web.extensions>

salesforce服务器以2000行块的形式发送结果,响应结构的一部分是
nextRecordsUrl
,其中包含指向下一页结果的URL,在获取整个结果集之前,您需要对其进行获取,以获取下一组记录,依此类推。

Json对象很有可能被服务器而不是Android截断。因此,您可能希望在问题中包含有关您对服务器的调用的一些详细信息;您使用哪种类型的API(REST、SOAP、Bulk),您尝试执行哪种调用。为了明确问题是否出在服务器或安卓系统上,请尝试使用wireshark等工具嗅探您的网络通信,并检查服务器的实际响应。它包括33231条记录还是只包括2000条记录。发布结果后,它将帮助他人帮助您,您甚至可以自己找到解决方案。
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 60000);  //1 minute
HttpConnectionParams.setSoTimeout(httpParams, 60000);          //1 minute
HttpClient client = new DefaultHttpClient(httpParams);