2014-12-25 5 views
8

Bei der Verwendung der android-async-http Bibliothek stolperte ich über params.add().Unterschied zwischen RequestParams add() und put() in AndroidAsyncHttp

Ich habe mit params.put() für eine Weile und es scheint besser als add() da es Datentypen anders als String erlaubt (wie int, lange, Objekt, Datei), während add() tut nicht.

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

Verwenden 'add()' für Arrays und 'setzen () 'für alles andere. – Sheharyar

Antwort

17

Der Hauptunterschied zwischen den beiden (andere als add() ‚s nur String-Unterstützung) ist, dass die vorherige put() Gegenwart param mit einem vorhandenen Schlüssel überschreibt, während add() nicht der Fall ist.

Zum Beispiel:

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

// Params: etc=etc&key=xyz 

Während Add zwei params mit dem gleichen Schlüssel erstellt:

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

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

Aber was ist die Bedeutung, dies zu tun?

Im obigen Beispiel würde der Web-Server liest nur den letzten Wert von key dh xyz und nicht abc aber das ist 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"] 
Verwandte Themen