2016-11-04 936 views
0

我想創建一個以URL字符串作爲參數並返回 MultivaluedHashMap<String, String>作爲輸出的函數。我通過它可以構建UriTemplate類的格式。如何從java中的URL字符串中獲取路徑參數

所以基本上我想創建一個類似於requestContext.getUriInfo().getPathParameters()

功能,所以我的功能將

public MultivaluedHashMap<String, String> getPathParamtersFromUrl(string url) 
{ 
} 

我不知道如何得到這個。 注意:我不想提取查詢參數。我想提取路徑參數。

+1

編寫代碼的哪個部分有問題?告訴我們你有什麼,並解釋你哪一部分麻煩。 – Andreas

回答

1

我仔細查看了UriTemplate類後就能找出解決方案。

private MultivaluedMap<String, String> getPathParameters(String uri, String strUrlTemplate) { 

     UriTemplate template = new UriTemplate(strUrlTemplate); 
     Map<String, String> parameters = new HashMap<>(); 
     Boolean value = template.match(uri, parameters); 
     return new MultivaluedHashMap(parameters); 

    } 
0

這將爲您提供除http方案和域名以外的路徑參數列表。

public static void main(String[] args) { 
    String url = "http://stackoverflow.com/questions/40428388/how-to-get-path-paramters-from-url-string-in-java"; 
    System.out.println("The path parameters of url:" + url); 
    List<String> p = getPathParamtersFromUrl(url); 
    p.stream().forEach(x -> System.out.println(x)); 
} 

private static List<String> getPathParamtersFromUrl(String url) { 
    String[] path = url.split("\\?"); 
    String[] pathparams = path[0].split("\\//"); 
    String[] param = pathparams[1].split("\\/"); 
    List<String> p = Arrays.asList(param); 
    return p.stream().filter(x -> !x.contains(".")).collect(Collectors.toList()); 
} 
相關問題