J'ai besoin d'obtenir l'hôte de cette URL
android-app://com.google.android.googlequicksearchbox?Pub_id={siteID}
java.net.URL
et java.net.URI
ne peut pas manipulez-le.
3 Réponses :
Le problème est dans les caractères {
et }
qui ne sont pas valides pour l'URI. Ressemble à un espace réservé qui n'a pas été résolu correctement lors de la création d'un URI.
Vous pouvez utiliser String.replaceAll ()
pour vous débarrasser de ces deux caractères:
String value = "android-app://com.google.android.googlequicksearchbox?Pub_id={siteID}"; URI uri = URI.create(value.replaceAll("[{}]", "")); System.out.println(uri.getHost()); // com.google.android.googlequicksearchbox
Pourriez-vous s'il vous plaît écrire tous les caractères qui ne sont pas valides pour l'URI. J'en connais un autre "\"
@DennisGlot voir perishablepress.com/stop-using-unsafe-characters-in- URL
Vous pouvez essayer le code suivant
String url = "android-app://com.google.android.googlequicksearchbox?Pub_id={siteID}"; url = url.replace("{", "").replace("}",""); URI u; try { u = new URI(url); System.out.println(u.getHost()); } catch (URISyntaxException e) { e.printStackTrace(); }
Vous voyez, j'ai finalement besoin d'un chemin, d'un schéma et d'une requête.
Je viens de trouver une bibliothèque super rapide pour analyser ces URL. https://github.com/anthonynsimon/jurl
C'est aussi très flexible.
S'il n'y a pas de gestionnaire de protocole installé pour
android-app:
alors on recevrait une exception avec "protocole inconnu".{}
peut également poser problème:"...? Pub_id =" + URLEncoder.encode ("{siteID}", "UTF-8"):
Bien que je soupçonne vous devez remplir{siteId}
.