2014-10-08 57 views
0

我有一個主要問題,並希望有人可以提供幫助。Parse.com REST API不會返回任何東西

我們有使用Parse作爲後端的web和Android應用程序。我們遇到的問題都發生在兩者上。我會解釋Android的問題。

我們使用REST API將數據保存到Parse.com。我們不使用SDK的原因是我們想要利用僅在RESTAPI中可用的批處理操作。

{ 
    "requests": [ 
    { 
     "body": { 
     "isFriable": false, 
     "haDetail": "", 
     "sizeOther": "", 
     "colourOther": "", 
     "texture": "", 
     "fieldInspection": { 
      "__type": "Pointer", 
      "className": "FieldInspection", 
      "objectId": "YS5bXHBwDu" 
     }, 
     "surfaceSubType": { 
      "__type": "Pointer", 
      "className": "SurfaceSubType", 
      "objectId": "d4IL5k1pv5" 
     }, 
     "size": { 
      "__type": "Pointer", 
      "className": "HomogenousMaterialSize", 
      "objectId": "ezr3uHDUvt" 
     }, 
     "colour": { 
      "__type": "Pointer", 
      "className": "HomogenousMaterialColour", 
      "objectId": "NqYXJcOkPE" 
     } 
     }, 
     "method": "POST", 
     "path": "/1/classes/HomogenousArea" 
    } 
    ] 
} 

以上是我的要求。這被推到https://api.parse.com/1/batch使用一個基本的默認HttpClient。

當我們執行HTTP請求時,它有時會掛起,它不會返回任何結果。大約每5或6個請求中就有一個這樣做。在成功的後續請求上完全相同的數據將會通過罰款。問題是,那時我們有重複的記錄保存到Parse,因爲我們的同步邏輯從未完成,因爲我們沒有得到響應。

Parse中有什麼我們可以用來調試這樣的請求嗎?以下是我們正在使用的當前http客戶端實現。注意:也放在從Square的OkHttp並擊中完全相同的問題。在./batch的

 // Instantiate the http client to make the batch request 
     DefaultHttpClient httpClient = new DefaultHttpClient(); 
     HttpPost post = setupHttpPost(url); 

     // Assign the data to the post 
     StringEntity entity = new StringEntity(insertData); 
     post.setEntity(entity); 

     // Setup the response handler 
     ResponseHandler response = new BasicResponseHandler(); 

     // Make the call to Post the new data 
     Object rersponse = httpClient.execute(post, response); 
     if (rersponse != null) { 
      return rersponse.toString();  
     } 
     return null; 

回答

0

奇怪的行爲....

確保您不會錯過解析錯誤響應。國際海事組織 - 有時可能會出現JSON解析錯誤或可能會漏掉的東西,如果你沒有密切關注在http響應實體的處理程序....

我還沒有使用Parse批處理api。我已經使用多線程http客戶端,並沒有看到你提到的流行的超時類型問題?

由於您使用REST,你應該能夠在包裹捲曲客戶端,您可以用捲曲CLI工具切換到提供更-debug一些測試呼叫...

由於您使用REST,你可以從切換批處理接口到多線程客戶端(請參閱「線程」示例,請參閱org.apache上的「配置」示例...

瘋狂的猜測,但如果你分解你的批次可能是更高數量的Http EXEC的背景與更小的有效載荷可能會更好地運作????

鏈接上的配置示例顯示y你可以通過域來配置池大小,以及如何測試超時(conn timeout,req timeout等)。

+0

感謝您的回覆羅伯特。 outter調用方法包裝在AsyncTask中,因此網絡操作不會阻塞UI線程。我也減少了請求中的數據量,但仍然相同。我的下一個端口是發送直接,但我懷疑我不會看到任何錯誤,因爲它的工作很直接 – 2014-10-08 15:10:49

+0

我會鑽AsnycTask,這就是你的問題所在。 – 2014-10-08 15:50:48

+0

我已經遵循該路徑。會讓你知道結果。再次感謝您的快速回復 – 2014-10-08 16:11:00