2014-12-25 12 views
8

Durante l'utilizzo della libreria android-async-http mi sono imbattuto in params.add().Differenza tra RequestParams add() e put() in AndroidAsyncHttp

Sto usando params.put() per un po 'e sembra meglio di add() in quanto permette tipi di dati diversi da String (come int, lungo, oggetto, file di) mentre add() fa non.

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

Usa 'add()' per array e 'messo () 'per tutto il resto. – Sheharyar

risposta

17

La principale differenza tra i due (diverso supporto String sola s' add()) è che put() sovrascrive la precedente presenza di param con una chiave esistente mentre add() no.

Ad esempio:

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

// Params: etc=etc&key=xyz 

Mentre aggiuntivo crea due params con la stessa chiave:

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

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

Ma qual è l'importanza di fare questo?

Nell'esempio precedente, il web-server sarebbe leggere solo l'ultimo valore di key cioè xyz e non abc ma questo è 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"] 
Problemi correlati