2014-06-19 4 views

ответ

0
String sourceUrl = "http://www.example.com/mysite/whatever/somefolder/bar/unsecure!+?#whätyöühäv€it/site.html"; // your current site 
    String targetUrl = "http://www.example.com/mysite/whatever/otherfolder/other.html"; // the link target 
    String expectedTarget = "../../../otherfolder/other.html"; 
    String[] sourceElements = sourceUrl.split("/"); 
    String[] targetElements = targetUrl.split("/"); // keep in mind that the arrays are of different length! 
    StringBuilder uniquePart = new StringBuilder(); 
    StringBuilder relativePart = new StringBuilder(); 
    boolean stillSame = true; 
    for(int ii = 0; ii < sourceElements.length || ii < targetElements.length; ii++) { 
     if(ii < targetElements.length && ii < sourceElements.length && 
       stillSame && sourceElements[ii].equals(targetElements[ii]) && stillSame) continue; 
     stillSame = false; 
     if(targetElements.length > ii) 
      uniquePart.append("/").append(targetElements[ii]); 
     if(sourceElements.length > ii +1) 
      relativePart.append("../"); 
    } 

    String result = relativePart.toString().substring(0, relativePart.length() -1) + uniquePart.toString(); 
    System.out.println("result: " + result); 
+0

Пожалуйста, отметьте его как ответ, если это поможет вам ... –

0

По https://jsr311.java.net/nonav/javadoc/javax/ws/rs/core/UriInfo.html если вы звоните

getPath() 

Вы «Получить путь текущего запроса относительно основания URI в виде строки.»

+0

Спасибо, но это решение не даст мне запрос Params – abr

+0

Не знаю, что сервер приложений вы используете, вы можете попытаться придать это: @ Контекст private HttpServletRequest servletRequest; а затем использовать servletRequest для получения данных –

0

проверить это:

String uri = "http://google.com/path?q1=va"; 
    int index = -1; 
    if ((index = uri.indexOf("://")) > 0) { 
     uri = uri.substring(index + 3); 
    } 
    index = uri.indexOf('/'); 
    uri = uri.substring(index); 
    System.out.println(uri); 

или как это:

URI uri = new URI("http://google.com/path?q1=va"); 
    System.out.println(uri.getPath()+"?"+uri.getQuery()); 
+0

Спасибо, я думаю, что лучшим решением пока является ваш второй ответ ... – abr

0

мне нужна точно такая же вещь хотя и несколько лет спустя. Тем не менее вот как.

URI requestURI = this.uriInfo.getRequestUri(); 
URI baseUri = this.uriInfo.getBaseUri(); 
URI uri = baseUri.relativize(requestURI); 
Смежные вопросы