[英]How to read query param value if special character (&) part of query param value
Url: https://myproject.dev.com/methodology/Culture?contentName=abc & def&path=Test&type=folder
只需要從 URL 上方獲取查詢參數,但問題是contentName=abc & def
中的“&”,因此在獲取 contentName 時,會在 abc、def 等兩部分中獲取值。
請建議獲取 contentName 的方法是abc & def
而不是 abc,def。
如果我們傳遞任何類型的特殊字符,我們必須對這些值進行編碼。 Java 提供了一個URLEncoder
class 用於將任何查詢字符串或表單參數編碼為 URL 編碼格式。 在對 URI 進行編碼時,常見的缺陷之一是對完整的 URI 進行編碼。 通常,我們只需要對 URI 的查詢部分進行編碼。
Map<String, String> requestParameters = new HashMap<>();
requestParameters.put("keyA", "abc123");
requestParameters.put("keyB", "val@!&$2");
String encodedURL = requestParameters.keySet().stream()
.map(key -> key + "=" + encodeValue(requestParameters.get(key)))
.collect(joining("&", "http://www.url_needed.com?", ""));
private String encodeValue(String value) {
return URLEncoder.encode(value, StandardCharsets.UTF_8.toString());
}
如果 & 字符是查詢字符串中名稱或值的一部分,則必須對其進行百分比編碼。 在給定的示例中: contentName=abc%26def&path=Test&type=folder
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.