Java 클래스 라이브러리에있는 URL 클래스의 equals()
메소드는 두 IP의 동등성을 확인하기 위해 호스트 이름에 대한 IP를 얻기 위해 DNS 요청을합니다. 이는 동일한 String
에서 생성 된 URL에 대해서도 발생합니다. 이 인터넷 접속을 피할 수있는 방법이 있습니까?URL.equals가 Java로 인터넷에 액세스해야하는 것을 피하는 방법은 무엇입니까?
답변
사용 java.net.URI 대신 URL을 시도합니다.
URL.equals를 사용하지 마십시오. 문서가 말한대로,
참고 :
equals
에 대한 정의 된 동작은 HTTP 가상 호스트와 일치하지 않는 것이 알려져 있습니다. 그냥 URL 문자열을 비교하려면
평등성 테스트는 어떻게해야합니까? – Mnementh
toString() 또는 toExternalForm()을 사용하여 외부 양식을 가져 와서 비교할 수 있습니다. 예비 테스트는 DNS에 액세스하지 못한다는 것을 보여줍니다. –
방금 빌의 대답을지지했다. URL 객체에서 toURI()를 호출하면됩니다. –
,
url1.toString().equals(url2.toString())
두 문자열은 크게 다를 수 있지만 동일한 리소스를 가리 킵니다. –
URL로 참조되는 리소스를 확인하려면 인터넷 액세스가 필요합니다. 그러므로 나는 그가 자신들의 URL을 비교하기를 원한다는 가정을했다. 따라서 "URL 문자열 비교를 원한다면"에 대한 나의 자격. – Rick
그리고 이것은 의미 론적 의미를 만들어줍니다. 왜냐하면 Locations보다는 Identifier를 비교하기를 원하기 때문입니다 – Gareth