La méthode equals()
de la classe URL dans la bibliothèque de classes Java effectue une requête DNS pour obtenir l'adresse IP du nom d'hôte, pour vérifier l'égalité des deux adresses IP. Cela arrive même pour les URL créées à partir du même String
. Existe-t-il un moyen d'éviter cet accès à Internet?Comment éviter que URL.equals ait besoin d'accéder à internet en Java?
Répondre
Utiliser java.net.URI au lieu d'URL.
N'utilisez pas URL.equals. Comme le dit la documentation,
Remarque: Le comportement défini pour
equals
est connu pour être incompatible avec l'hébergement virtuel dans HTTP.
Comment devrais-je tester l'égalité? – Mnementh
Vous pouvez utiliser toString() ou toExternalForm() pour obtenir le formulaire externe et les comparer. Les tests préliminaires montrent ici qu'il n'accède pas au DNS. –
Je viens de mettre à jour la réponse de Bill. Appelez simplement àURI() sur vos objets URL. –
Si vous voulez juste pour comparer les chaînes d'URL, essayez
url1.toString().equals(url2.toString())
Les deux chaînes peuvent être très différentes mais pointer vers la même ressource. –
Si vous souhaitez vérifier la ressource référencée par une URL, vous avez évidemment besoin d'un accès Internet. Par conséquent, j'ai fait l'hypothèse qu'il voulait comparer les URL eux-mêmes. D'où ma qualification de "si vous voulez juste comparer les cordes d'URL". – Rick
- 1. Comment faire pour que JOptionPane.showConfirmDialog ait Non sélectionné par défaut?
- 2. Télécharger un fichier depuis Internet en utilisant java: Comment authentifier?
- 3. Comment implémenter une radio internet en utilisant java
- 4. Comment faire en sorte que ma sous-classe NSScroller ait une largeur différente?
- 5. Comment attendre qu'un flux réseau ait des données à lire?
- 6. Paramètres de Java Internet Connections - jdk1.4
- 7. Est-ce que Zend Lucene a besoin de Java Lucene?
- 8. Besoin d'aide avec Java JMS ResourceAllocationException
- 9. Suppression des "fichiers Internet temporaires" de Java
- 10. Comment éviter que Team Foundation ne débloque des verrous
- 11. Exécuter une requête MySQL après que wget ait fini de télécharger le fichier
- 12. Puis-je définir une fenêtre en Java pour qu'elle ait un redimensionnement uniforme (c'est-à-dire un carré)?
- 13. Comment configurer le terme Mac OS X pour que git ait la couleur?
- 14. besoin de créer une application qui fonctionnera sur Internet aussi et internet local aussi
- 15. JibX: comment mapper une classe et éviter qu'elle soit sortie en tant que noeud XML
- 16. Comment éviter que la section "post" gauche ne tombe?
- 17. Comment tester la disponibilité d'Internet en Java?
- 18. Comment éviter que les éléments CListCtrl soient partiellement visibles?
- 19. .NET en tant que client, Java en tant que serveur
- 20. Comment éviter les doublons?
- 21. Comment éviter une publication en JavaScript?
- 22. Besoin d'aide pour passer des génériques Java à Collections.sort()
- 23. Besoin de citation pour le modèle d'interface d'extension en Java
- 24. Comment éviter ces blocages?
- 25. Comment éviter un NSCachedImageRep
- 26. Comment vérifier si l'élément de tableau est null pour éviter NullPointerException en Java
- 27. Besoin de code VB commenté pour le convertir en Java
- 28. Le module backend a besoin d'URL depuis la couche de présentation - comment éviter la dépendance cyclique?
- 29. ZF Route comment éviter overide?
- 30. Java Besoin d'aide pour implémenter un algorithme
Et bien sûr cela a aussi un sens sémantique, parce que vous voulez comparer les identifiants plutôt que les emplacements – Gareth