2014-12-25 46 views
8

RequestParams add()和put()之間的差異使用android-async-http庫時,我偶然發現params.add()AndroidAsyncHttp

我一直在使用params.put()了一會兒,似乎比add(),因爲它允許比字符串(如INT對象文件),而add()做其他數據類型不。

RequestParams params = new RequestParams(); 

// So how is this 
params.add("param_a", "abc"); 

// different from this 
params.put("param_a", "abc"); 

// and which one should I use? 
+4

使用'加()'數組和'放( )'一切。 – Sheharyar

回答

17

兩個(比add()的字符串僅支持其他)之間的主要區別是,put()覆蓋的param先前存在與現有的鍵,同時add()沒有。

例如:

params.put("etc", "etc"); 
params.put("key", "abc"); 
params.put("key", "xyz"); 

// Params: etc=etc&key=xyz 

雖然附加創​​建兩個params使用相同的密鑰:

params.add("etc", "etc"); 
params.add("key", "abc"); 
params.add("key", "xyz"); 

// Params: etc=etc&key=abc&key=xyz 

但什麼是這樣做的重要性?

在上面的例子中,Web服務器將只讀取keyxyz而不是abc的最後一個值,但這是useful when POSTing arrays

params.add("key[]", "a"); 
params.add("key[]", "b"); 
params.add("key[]", "c"); 

// Params: key[]=a&key[]=b&key[]=c 
// The server will read it as: "key" => ["a", "b", "c"]