簡體   English   中英

如果查詢參數值中有特殊字符 (&) 部分,如何讀取查詢參數值

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

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