Skip to content

Commit ee6a875

Browse files
committed
Add support for multivalued params
1 parent 9636386 commit ee6a875

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

src/com/loopj/android/http/RequestParams.java

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,13 @@
1818

1919
package com.loopj.android.http;
2020

21-
import java.io.InputStream;
2221
import java.io.File;
2322
import java.io.FileInputStream;
2423
import java.io.FileNotFoundException;
24+
import java.io.InputStream;
2525
import java.io.UnsupportedEncodingException;
26+
import java.util.ArrayList;
27+
import java.util.Collections;
2628
import java.util.LinkedList;
2729
import java.util.List;
2830
import java.util.Map;
@@ -41,9 +43,9 @@
4143
* <p>
4244
* <pre>
4345
* RequestParams params = new RequestParams();
44-
* params.put("username", "james");
45-
* params.put("password", "123456");
46-
* params.put("email", "my&#064;email.com");
46+
* params.add("username", "james");
47+
* params.add("password", "123456");
48+
* params.add("email", "my&#064;email.com");
4749
* params.put("profile_picture", new File("pic.jpg")); // Upload a File
4850
* params.put("profile_picture2", someInputStream); // Upload an InputStream
4951
* params.put("profile_picture3", new ByteArrayInputStream(someBytes)); // Upload some bytes
@@ -55,7 +57,7 @@
5557
public class RequestParams {
5658
private static String ENCODING = "UTF-8";
5759

58-
protected ConcurrentHashMap<String, String> urlParams;
60+
protected List<BasicNameValuePair> urlParams;
5961
protected ConcurrentHashMap<String, FileWrapper> fileParams;
6062

6163
/**
@@ -74,7 +76,7 @@ public RequestParams(Map<String, String> source) {
7476
init();
7577

7678
for(Map.Entry<String, String> entry : source.entrySet()) {
77-
put(entry.getKey(), entry.getValue());
79+
add(entry.getKey(), entry.getValue());
7880
}
7981
}
8082

@@ -87,7 +89,7 @@ public RequestParams(Map<String, String> source) {
8789
public RequestParams(String key, String value) {
8890
init();
8991

90-
put(key, value);
92+
add(key, value);
9193
}
9294

9395
/**
@@ -105,7 +107,7 @@ public RequestParams(Object... keysAndValues) {
105107
for (int i = 0; i < len; i += 2) {
106108
String key = String.valueOf(keysAndValues[i]);
107109
String val = String.valueOf(keysAndValues[i + 1]);
108-
put(key, val);
110+
add(key, val);
109111
}
110112
}
111113

@@ -114,9 +116,9 @@ public RequestParams(Object... keysAndValues) {
114116
* @param key the key name for the new param.
115117
* @param value the value string for the new param.
116118
*/
117-
public void put(String key, String value){
119+
public void add(String key, String value){
118120
if(key != null && value != null) {
119-
urlParams.put(key, value);
121+
urlParams.add(new BasicNameValuePair(key, value));
120122
}
121123
}
122124

@@ -173,13 +175,13 @@ public void remove(String key){
173175
@Override
174176
public String toString() {
175177
StringBuilder result = new StringBuilder();
176-
for(ConcurrentHashMap.Entry<String, String> entry : urlParams.entrySet()) {
178+
for(BasicNameValuePair pair : urlParams) {
177179
if(result.length() > 0)
178180
result.append("&");
179181

180-
result.append(entry.getKey());
182+
result.append(pair.getName());
181183
result.append("=");
182-
result.append(entry.getValue());
184+
result.append(pair.getValue());
183185
}
184186

185187
for(ConcurrentHashMap.Entry<String, FileWrapper> entry : fileParams.entrySet()) {
@@ -204,8 +206,8 @@ public HttpEntity getEntity() {
204206
SimpleMultipartEntity multipartEntity = new SimpleMultipartEntity();
205207

206208
// Add string params
207-
for(ConcurrentHashMap.Entry<String, String> entry : urlParams.entrySet()) {
208-
multipartEntity.addPart(entry.getKey(), entry.getValue());
209+
for(BasicNameValuePair pair : urlParams) {
210+
multipartEntity.addPart(pair.getName(), pair.getValue());
209211
}
210212

211213
// Add file params
@@ -237,15 +239,15 @@ public HttpEntity getEntity() {
237239
}
238240

239241
private void init(){
240-
urlParams = new ConcurrentHashMap<String, String>();
242+
urlParams = Collections.synchronizedList(new ArrayList<BasicNameValuePair>());
241243
fileParams = new ConcurrentHashMap<String, FileWrapper>();
242244
}
243245

244246
protected List<BasicNameValuePair> getParamsList() {
245247
List<BasicNameValuePair> lparams = new LinkedList<BasicNameValuePair>();
246248

247-
for(ConcurrentHashMap.Entry<String, String> entry : urlParams.entrySet()) {
248-
lparams.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
249+
for(BasicNameValuePair pair : urlParams) {
250+
lparams.add(pair);
249251
}
250252

251253
return lparams;

0 commit comments

Comments
 (0)