나는 쿼리 문자열을 조작하기 위해 java.net.URI를 사용하려고 시도했지만 한 URL에서 쿼리 문자열을 가져 와서 다른 쿼리 문자열에 배치하는 것과 같은 매우 간단한 작업에도 실패했습니다. java.net.URI 사용 방법
는URI sample = new URI("test?param1=x%3D1");
URI uri2 = new URI(
"http",
"domain",
"/a-path",
sample.getRawQuery(),
sample.getFragment());
전화 uri2.toASCIIString()
에 반환해야 작업 아래에이 코드를 만드는 방법을 알고 수행 http://domain/a-path?param1=x%3D1
을하지만 반환 http://domain/a-path?param1=x%253D1
(이중 인코딩)
내가 getQuery를 (사용하는 경우) 대신 getRawQuery() 쿼리 문자열은 전혀 인코딩되지 않으며 URL은 다음과 같이 보입니다. http://domain/a-path?param1=x=1
좋은 설명. 따라서 URI 인터페이스는 제대로 설계되지 않았습니다 (두 번째 생성자에 대한 이유는 거의 없습니다). 더 나은 URI 클래스를 알고 계십니까? 날짜/캘린더 클래스를 대체하는 joda-time과 같은가? –
아니요, 저는 아닙니다 ... 그리고'URI'는 이미 이전의'java.net.URL' 클래스의 재 작성이었습니다. – Jesper