2014-12-25 16 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"]