Ios 从iphone向java servlet发送json对象的时间太长

Ios 从iphone向java servlet发送json对象的时间太长,ios,json,http,google-app-engine,servlets,Ios,Json,Http,Google App Engine,Servlets,我们正在开发一个iphone应用程序,它将用户所在位置的json字符串发送到部署在google app engine上的web应用程序(JAVA)。我们使用htpp请求发送这些字符串。我们的问题是,字符串有时很大,这需要很长时间。还有其他方法吗?如果您的系统正在发送位置集合,请尝试不要一次发送所有位置,而是将整个集合拆分为小块,估计大小不会花费太多时间 另一个想法是:如果您将此发送作为后台进程,那么主进程(如在用户界面中)不应受到惩罚。您可以压缩JSON。这是GAE的一段代码: JSONObje

我们正在开发一个iphone应用程序,它将用户所在位置的json字符串发送到部署在google app engine上的web应用程序(JAVA)。我们使用htpp请求发送这些字符串。我们的问题是,字符串有时很大,这需要很长时间。还有其他方法吗?

如果您的系统正在发送位置集合,请尝试不要一次发送所有位置,而是将整个集合拆分为小块,估计大小不会花费太多时间


另一个想法是:如果您将此发送作为后台进程,那么主进程(如在用户界面中)不应受到惩罚。

您可以压缩JSON。这是GAE的一段代码:

JSONObject json = new JSONObject(uncompress(Base64.decode(encodedJSONData)));
这是解压缩方法:

protected String uncompress(byte[] compressedData) throws IOException {
    StringBuffer data = new StringBuffer();
    GZIPInputStream stream = new GZIPInputStream(new ByteArrayInputStream(compressedData));
    BufferedReader br = new BufferedReader(new InputStreamReader(stream));
    String line;
    while ((line = br.readLine()) != null) {
        data.append(line);
    }
    return data.toString();
}

我们以前遇到过请求超时的问题,所以我们必须将字符串划分为块,所以现在我们实际上是以块的形式发送集合,但这仍然需要很长时间,尽管它总是有效的。在后台发送是一个不错的选择,因为它不会干扰用户界面和用户体验。但我想知道的是,为什么像facebook或twitter这样的应用程序上传的文件(比如照片)要大得多?他们使用的是另一种协议吗?对压缩数据进行base64编码毫无意义,只是为了浪费空间。base64编码是通过HTTP请求发送所必需的。你有别的建议吗?不,不是。您可以在HTTP请求中发送二进制数据。