2015-06-04 20 views
4
public static Hashtable parseUrlString(String url) { 
    Hashtable parameter = new Hashtable(); 
    List<NameValuePair> params = null; 
    try { 
     params = URLEncodedUtils.parse(new URI(url), "UTF-8"); 
     for (NameValuePair param : params) { 
      if (param.getName() != null && param.getValue() != null) 
       parameter.put(param.getName(), param.getValue()); 
     } 
    } catch (URISyntaxException e) { 
     e.printStackTrace(); 
    } 
    return parameter; 
} 

上述方法對我的作品與價值提取參數名的哈希表,但在阿比21+的的NameValuePair和URLEncodedUtils已被棄用等什麼是我可以替代的最佳方式這種方法?提取參數值

回答

9

在Android中,你不應該使用URLEncodedUtils現在已不建議。一個好的選擇是使用Uri類代替:使用getQueryParameterNames()檢索查詢參數鍵,然後迭代它們並使用getQueryParameter()檢索每個值。

+0

謝謝您的回答 –

0

您可以嘗試ContentValues

for (ContentValues param : params) { 
      if (param.getName() != null && param.getValue() != null) 
       parameter.put(param.getName(), param.getValue()); 
     } 
+0

感謝您的答覆有對我來說是多了一個問題URLEncodedUtils也不贊成:( –

8

您可以使用android.net.Uri。

Uri uri=Uri.parse(url); 

它具有getQueryParameterNames()和uri.getQueryParameter(parameterNameString);

+0

謝謝你的回答:) –

+0

不客氣! –

4

已經回答了,但這裏的方法寫出來

public static HashMap<String, String> getQueryString(String url) { 
    Uri uri= Uri.parse(url); 

    HashMap<String, String> map = new HashMap<>(); 
    for (String paramName : uri.getQueryParameterNames()) { 
     if (paramName != null) { 
      String paramValue = uri.getQueryParameter(paramName); 
      if (paramValue != null) { 
       map.put(paramName, paramValue); 
      } 
     } 
    } 
    return map; 
} 
3

嘗試:

Uri uri = Uri.parse(yourStrUrl); 
String paramValue = uri.getQueryParameter("yourParam");