2012-01-18 90 views
0

我們正在開發一個iphone應用程序,用於將用戶所在的位置的json字符串發送到部署在Google應用程序引擎上的Web應用程序(JAVA)。我們使用htpp請求來發送這些字符串。我們的問題是琴絃有時很大,而且這需要很長時間。還有其他方法嗎?將iphone的json對象發送到java servlet的時間過長

回答

0

如果您的系統正在發送一組位置,請不要一次全部發送它們,而是將整個集合分成小塊,其大小估計不會花費太多時間。

另一個想法:如果你這樣做發送作爲後臺進程,主流程(如在用戶界面)不應受到懲罰。

+1

我們之前曾請求時序的問題,所以我們不得不分割字符串來塊,所以現在我們實際上是以大塊的形式發送集合,但它仍然需要很長時間,儘管它總是有效。在後臺發送是一個不錯的選擇,因爲它不會干擾用戶界面和用戶體驗。但是我想知道爲什麼很多更大的文件(例如照片)如此快速地上傳到Facebook或Twitter等應用程序中?他們是否使用其他協議? – user1156139 2012-01-18 12:12:05

1

你可以壓縮你的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(); 
} 
+0

除了作爲浪費空間的方式之外,base64編碼壓縮數據絕對沒有意義。 – 2012-01-19 00:37:27

+0

必須通過HTTP請求發送Base64編碼。你建議另一種方式? – Victor 2012-01-19 12:09:45

+0

不,不是。您可以在HTTP請求中發送二進制數據。 – 2012-01-19 23:17:07