[英]Parse HTTP-style key-value pairs into java.util.HashMap
我正在使用一個Web服務,該服務以HTTP樣式的鍵值對列表形式顯示其響應。 我想將它們解析為HashMap。 我不想編寫解析器。 我想修改我當前的hackish解決方案,一個string.split("&")
然后是一系列帶有邏輯插入的string.split("=")
調用。
在SO-land那里有人知道對將要執行此操作的庫的引用嗎? 我瀏覽了Apache和javax,但沒有看到太多內容。 我正在Android中執行此操作。
一個簡單的響應示例是:
result=success&id=8a8d3c30-e184-11e1-9b23-0800200c9a66&name=wahooooooo
理想功能:
public HashMap<String, String> parse(InputStream in);
如果您有apache庫,則可以使用如下的URLEncodedUtils類:
HashMap<String, String> parameters = new HashMap<String, String>();
String query = "result=success&id=8a8d3c30-e184-11e1-9b23-0800200c9a66&name=wahooooooo";
List<NameValuePair> params = URLEncodedUtils.parse(query, Charset.defaultCharset());
for (NameValuePair nameValuePair : params) {
parameters.put(nameValuePair.getName(), nameValuePair.getValue());
}
您可以使用UrlEncodedUtils
只需調用URLEncodedUtils.parse(yourString,Charset.forName("UTF-8")).
您將獲得一個List<NameValuePair>
其中包含與名稱和值相關的元素。
看到這個: HttpComponents
這是一個簡單的程序
已經回答,但是這里是URLEncodedUtils
的替代方法
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.