2014-12-25 12 views
8

Trong khi sử dụng thư viện android-async-http tôi đã tình cờ gặp params.add().Sự khác biệt giữa RequestParams add() và put() trong AndroidAsyncHttp

Tôi đã sử dụng params.put() trong một thời gian và có vẻ như tốt hơn so với add() vì nó cho phép các kiểu dữ liệu khác ngoài Chuỗi (như int, dài, đối tượng, tập tin) trong khi add() làm không phải.

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

Sử dụng 'thêm() 'cho Mảng và' đặt () 'cho mọi thứ khác. – Sheharyar

Trả lời

17

Sự khác biệt lớn giữa hai (trừ hỗ trợ add() 's Chuỗi-only) là put() ghi đè sự có mặt trước của param với an existing key trong khi add() không.

Ví dụ:

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

// Params: etc=etc&key=xyz 

Trong khi add tạo ra hai params với phím giống nhau:

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

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

Nhưng tầm quan trọng của việc này là gì?

Trong ví dụ trên, các máy chủ web sẽ chỉ đọc giá trị cuối cùng của key tức xyz và không abc nhưng đây là 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"] 
Các vấn đề liên quan