2014-02-23 41 views
2

我試圖經由RestKit發送點的數組在GET請求:RestKit:發送2×嵌套數組作爲GET參數,不正確的序列化

{ 
coordinates: [ 
    [50,60], 
    [100,200], 
    [300,400] 
] 
} 

代碼:

[restkitManager getObjectsAtPath:path parameters:coordinates success:... failure:...] 

當我檢查我的服務器的日誌我看到這個請求被髮送到服務器:

http://<...>?coordinates[][]=50&coordinates[][]=60&coordinates[][]=100... 

這是不正確的,我會在次破陣列e服務器。號碼必須存在於括號[0] .. [1] ..:

http://<...>?coordinates[0][0]=50&coordinates[0][1]=60&coordinates[1][0]=100... 

這是一個錯誤嗎?如果是這樣,是否有任何解決方法?我已經在考慮創建一個以數字爲關鍵字的字典。

SO,我的解決辦法

我轉化根的NSArray到NSDictionary中與數字作爲密鑰。現在我可以通過使用RestKit的GET請求發送它。

回答

2

我想你真正想要的是POST到服務器。使用GET將參數編碼到URL中作爲查詢參數。從技術上講,您可以使用GET發送身體數據,但使用量不大。

確保你的服務器要求和:

  1. 嘗試張貼到服務器
  2. 確保你的序列化類型設置爲JSON

如果你想使用GET和查詢參數,最好的選擇是將數組內容轉換爲服務器期望的任何字符串格式,並將其作爲coordinates密鑰的值提供給字典。

+0

嗨,再次感謝您的答案:)這是一個搜索(過濾)請求,通常是通過GET(甚至在谷歌中,你可以看到URL中的搜索參數)。我會嘗試將其轉換爲POST,但仍不明白爲什麼RestKit無法通過GET來完成它?或者可能是RestKit使用的Objective-C原生序列化方法。 JavaScript很好。 – oyatek