4
votes

Obtenez le domaine d'une URL étrange mais valide avec Java

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.


1 commentaires

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


3 Réponses :


8
votes

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


2 commentaires

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



0
votes

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();
        }


0 commentaires

1
votes

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.


0 commentaires