AndroidAsyncHttp中的RequestParams add()和put()之间的区别

在使用android-async-http库的时候,偶然发现了params.add()

我一直在使用params.put()一段时间,它似乎比add()更好,因为它允许除String之外的数据types(如intlongobjectfile ),而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? 

    两者之间的主要区别 (除了add()的String-only支持)之外, put()覆盖之前存在的param ,而add()则不会。

    例如:

     params.put("etc", "etc"); params.put("key", "abc"); params.put("key", "xyz"); // Params: etc=etc&key=xyz 

    而add使用相同的键创build两个params

     params.add("etc", "etc"); params.add("key", "abc"); params.add("key", "xyz"); // Params: etc=etc&key=abc&key=xyz 

    但是这样做的重要性呢?

    在上面的例子中,Web服务器只会读取key的最后一个值,即xyz而不是abc但是在POST数组时,这是有用的 :

     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"]