답변
Apache URIUtils가 작동해야합니다. 외부 라이브러리를 가져 오지 않으려면 java.net.URI
이 처리 할 수없는 경우 (즉, 기본 URI 경로가 자식 URI의 접두어가 아닌 경우) 상대 URI를 올바르게 해결해야하는 간단한 구현 방법이 있습니다 통로). 당신은 당신이 원하는 경우는 일반적인 경우를 처리하는 것을 추가해야합니다 -이베이스와 아이가 같은 방식과 권한을 가지고 있음을 시행하지 않는
public static URI relativize(URI base, URI child) {
// Normalize paths to remove . and .. segments
base = base.normalize();
child = child.normalize();
// Split paths into segments
String[] bParts = base.getPath().split("\\/");
String[] cParts = child.getPath().split("\\/");
// Discard trailing segment of base path
if (bParts.length > 0 && !base.getPath().endsWith("/")) {
bParts = Arrays.copyOf(bParts, bParts.length - 1);
}
// Remove common prefix segments
int i = 0;
while (i < bParts.length && i < cParts.length && bParts[i].equals(cParts[i])) {
i++;
}
// Construct the relative path
StringBuilder sb = new StringBuilder();
for (int j = 0; j < (bParts.length - i); j++) {
sb.append("../");
}
for (int j = i; j < cParts.length; j++) {
if (j != i) {
sb.append("/");
}
sb.append(cParts[j]);
}
return URI.create(sb.toString());
}
참고. 이것은 모든 경계 케이스에 대해 작동하지 않을 수도 있지만, 그것은 당신에게 반대합니다.
감사합니다.하지만 두 호스트 이름을 비교해야합니다. 'if (! base.getHost(). equalsIgnoreCase (child.getHost())) { \t return child; }' – Heiko
난 당신이
해결
공공 정적 URI의 해결 (URI 기저 URI, URI 참조)
Resolves a URI reference against a base URI. Work-around for bugs in java.net.URI (e.g.)
Parameters:
baseURI - the base URI
reference - the URI reference
Returns:
the resulting URI
예 아파치 URIUtils를 사용할 수 있다고 생각 http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/utils/TestURIUtils.java
- 1. 나는이 두 인터페이스를 가지고
- 2. 나는이 기능을 가지고
- 3. , 나는이 코드를 가지고 JQuery와
- 4. 나는이 코드를 가지고,
- 5. JQuery와 나는이 코드를 가지고
- 6. 나는이 SQL 쿼리를 가지고
- 7. PHP 나는이 배열 가지고
- 8. 나는이 클래스를 가지고 jQuery를
- 9. 나는이 XML 가지고 RelativeLayout의
- 10. 그래서, 나는이 코드를 가지고 BNF
- 11. 내가 배열을 가지고 있고, 나는이 가지고 배열
- 12. 레일 경로 : 나는이 컨트롤러를 가지고
- 13. 서블릿이 동일한 두 URI를 지원합니다.
- 14. 나는이 목표를 가지고 동적 두 번째 하위 도메인
- 15. SQL 쿼리, 나는이 표를 가지고
- 16. JQuery와 나는이 구조를 가지고 HREF
- 17. 예를 들어 나는이 코드를 가지고,
- 18. 문제 나는이 방법을 가지고 CGPoint
- 19. 나는이 같은 코드를 가지고 널
- 20. 나는이 같은 proplist 가지고 proplist
- 21. jQuery를 찾기 나는이 HTML 조각을 가지고
- 22. 이 표시 나는이 문제를 가지고 MySQL의
- 23. 내용을 자바 URI를 .json하는 GET 요청을받는 것은
- 24. 나는이 두 테이블이
- 25. 나는이 배열을 자바 스크립트
- 26. 나는이 튜토리얼 사용하고 자바
- 27. 단위 테스트 번호 나는이 (몽구스)를 가지고
- 28. 나는이 코드를 가지고 MySQL의 페이징 (LIMIT)
- 29. 정렬 오브젝트 나는이 필드 개체의 컬렉션을 가지고
- 30. SPItemEventReceiver.ItemUpdated : 그래서, 나는이 코드를 가지고 properties.ListItem
[알려진 버그] (http://bugs.sun.com/view_bug.do?bug_id=6226081)입니다. 나는 당신이 다른 도서관을 찾거나 직접 써야한다고 생각합니다. –