2016-11-04 3 views
0

Я хочу создать функцию, которая возьмет строку URL как параметр и вернет MultivaluedHashMap<String, String> в качестве вывода. У меня есть формат url со мной, через который я могу построить класс UriTemplate.Как получить параметры пути из строки URL в java

Поэтому в основном я хочу создать функции, аналогичные 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()); 
} 
Смежные вопросы