1 package org.robolectric.shadows.httpclient; 2 3 import android.net.Uri; 4 import java.io.IOException; 5 import java.util.LinkedHashMap; 6 import java.util.List; 7 import java.util.Map; 8 import java.util.Set; 9 import org.apache.http.HttpEntity; 10 import org.apache.http.HttpRequest; 11 import org.apache.http.NameValuePair; 12 import org.apache.http.client.methods.HttpEntityEnclosingRequestBase; 13 import org.apache.http.client.methods.HttpGet; 14 import org.apache.http.client.utils.URLEncodedUtils; 15 16 public class ParamsParser { 17 parseParams(HttpRequest request)18 public static Map<String, String> parseParams(HttpRequest request) { 19 if (request instanceof HttpGet) { 20 return parseParamsForGet(request); 21 } 22 if (request instanceof HttpEntityEnclosingRequestBase) { 23 return parseParamsForRequestWithEntity((HttpEntityEnclosingRequestBase) request); 24 } 25 return new LinkedHashMap<>(); 26 } 27 parseParamsForRequestWithEntity( HttpEntityEnclosingRequestBase request)28 private static Map<String, String> parseParamsForRequestWithEntity( 29 HttpEntityEnclosingRequestBase request) { 30 try { 31 LinkedHashMap<String, String> map = new LinkedHashMap<>(); 32 HttpEntity entity = request.getEntity(); 33 if (entity != null) { 34 List<NameValuePair> pairs = URLEncodedUtils.parse(entity); 35 36 for (NameValuePair pair : pairs) { 37 map.put(pair.getName(), pair.getValue()); 38 } 39 } 40 return map; 41 } catch (IOException e) { 42 throw new RuntimeException(e); 43 } 44 } 45 parseParamsForGet(HttpRequest request)46 private static Map<String, String> parseParamsForGet(HttpRequest request) { 47 Uri uri = Uri.parse(request.getRequestLine().getUri()); 48 Set<String> paramNames = uri.getQueryParameterNames(); 49 LinkedHashMap<String, String> map = new LinkedHashMap<>(); 50 for (String paramName : paramNames) { 51 map.put(paramName, uri.getQueryParameter(paramName)); 52 } 53 return map; 54 } 55 } 56