Java 获取url问号后的参数和请求名称

本文介绍了一种从URL中解析参数并将其存储为Map的方法。通过一个示例URL, 展示了如何使用Java代码来获取特定参数的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近工作经常会碰到处理 URL ,需要获取 URL 中参数 Key 的值。

比如下面这样一个 URL

http://127.0.0.1:8800/user/designer?userId=38&entry=1&appKey=340506427690999808

获取参数的值
利用下面的方法方法将 URL 的参数和值存到 Map

public static Map<String, String> splitQuery(URL url) throws UnsupportedEncodingException {
        Map<String, String> query_pairs = new LinkedHashMap<String, String>();
        String query = url.getQuery();
        String[] pairs = query.split("&");
        for (String pair : pairs) {
            int idx = pair.indexOf("=");
            query_pairs.put(URLDecoder.decode(pair.substring(0, idx), "UTF-8"), URLDecoder.decode(pair.substring(idx + 1), "UTF-8"));
        }
        return query_pairs;
    }

获取key

 Map<String, String> stringMap = splitQuery(url);
    System.out.println(stringMap.get("userId"));
    System.out.println(stringMap.get("entry"));
    System.out.println(stringMap.get("appKey"));
Java中发送POST请求并拼接URL参数通常涉及使用`java.net.HttpURLConnection`或第三方库如`org.apache.http.client`。以下是基本步骤: 1. 创建URL连接(假设URL为`http://example.com/api`,参数为key-value对,如`param1=value1&param2=value2`): ```java String baseUrl = "http://example.com/api"; String queryParameters = "param1=value1&param2=value2"; URL url = new URL(baseUrl + "?" + queryParameters); ``` 这里我们使用问号(`?`)将基础URL查询字符串分开。 2. 使用`HttpURLConnection`发送POST请求: ```java HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setDoOutput(true); // 设置允许输出 try (OutputStream outputStream = connection.getOutputStream()) { byte[] postDataBytes = ("Content-Type: application/x-www-form-urlencoded\r\n" + "\r\n" + queryParameters).getBytes(StandardCharsets.UTF_8); outputStream.write(postDataBytes); } int responseCode = connection.getResponseCode(); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); ``` 这里设置了`setRequestMethod("POST")`来指定请求类型,并设置`setDoOutput(true)`以允许数据写入到连接。 3. 获取响应(例如,返回的JSON数据): - 对于简单的HTTP响应,可以直接读取输入流的文本。 - 对于更复杂的响应,可以解析`response.toString()`得到的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值