2016-11-04 33 views
0

URL文字列をパラメーターとし、 MultivaluedHashMap<String, String>を出力として返す関数を作成したいと考えています。私はUriTemplateクラスを構築するための私のURLのフォーマットを持っています。URL文字列からjavaのパスパラメーターを取得する方法

だから基本的に私は、だから私の機能は、私はこれを取得する方法がわからないです

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

なりますrequestContext.getUriInfo().getPathParameters()

と同様の機能を作成します。 注:クエリパラメータを抽出する必要はありません。パスのパラメータを抽出したい。

+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()); 
} 
関連する問題