0

キーと値のペアの HTTP スタイルのリストとして応答を提示する Web サービスを使用しています。それらを HashMap に解析したいと思います。パーサーを書きたくありません。現在のハックなソリューションを修正したいと思います。その後に、ロジックが散在string.split("&")する一連の呼び出しが続きます。string.split("=")

SO ランドでこれを行うライブラリへの参照を知っている人はいますか? Apache と javax をブラウズしましたが、あまり見当たりませんでした。私はAndroidでこれをやっています。

応答の簡単な例は次のとおりです。

result=success&id=8a8d3c30-e184-11e1-9b23-0800200c9a66&name=wahooooooo

理想的な機能:

public HashMap<String, String> parse(InputStream in);
4

3 に答える 3

4

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());
    }
于 2012-08-08T18:38:04.493 に答える
2

UrlEncodedUtilsを使用できます

呼び出すだけURLEncodedUtils.parse(yourString,Charset.forName("UTF-8")).

そして、List<NameValuePair>含まれる名前と値に関連する要素を取得します。

これを参照してください:HttpComponents

ここに簡単なプログラムがあります

于 2012-08-08T18:31:15.153 に答える
0

すでに回答されていますが、ここに代替手段があります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;
}
于 2016-08-25T18:08:32.363 に答える