码迷,mamicode.com
首页 > 其他好文 > 详细

URI获取请求参数

时间:2020-05-17 19:08:19      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:pre   oid   except   val   coding   ber   不能   values   java   

一、业务场景

获取类似http://120.0.0.1:8080/receiveState?timeStamp=1586937885&number=2这样的请求uri中的某些参数

二、解决方法

处理思想:

根据uri字符串的规律,三次切割。第一次获取路径和多个参数连接字符串,继续切割参数字符串,获取单个参数键值对,最后切割键值对拿取参数值

 

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class UriSplitTest {

    public static Map<String, List<String>> getQueryParams(String url) {
        try {
            Map<String, List<String>> params = new HashMap<String, List<String>>();
            String[] urlParts = url.split("\\?");//这里分割uri成请求路径和请求参数两部分,注意这里的?不能直接作为分隔符,需要转义
            if (urlParts.length > 1) {
                String query = urlParts[1];//获取到参数字符串
                for (String param : query.split("&")) {
                    String[] pair = param.split("=");
                    String key = URLDecoder.decode(pair[0], "UTF-8");
                    String value = "";
                    if (pair.length > 1) {
                        value = URLDecoder.decode(pair[1], "UTF-8");
                    }

                    List<String> values = params.get(key);
                    if (values == null) {
                        values = new ArrayList<String>();
                        params.put(key, values);
                    }
                    values.add(value);
                }
            }

            return params;
        } catch (UnsupportedEncodingException ex) {
            throw new AssertionError(ex);
        }
    
    }
    
    public static void main(String[] args) {
        String uri = "http://120.0.0.1:8080/receiveState?timeStamp=1586937885&number=2";
        Map<String, List<String>> params = getQueryParams(uri);
        System.out.println(params.toString());//{timeStamp=[1586937885], number=[2]}
    }

}

 

URI获取请求参数

标签:pre   oid   except   val   coding   ber   不能   values   java   

原文地址:https://www.cnblogs.com/Mr-k404/p/12906352.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!