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}.