簡體   English   中英

將HTTP樣式的鍵/值對解析為java.util.HashMap

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM