Получить домен из странного, но действительного URL с Java - PullRequest
0 голосов
/ 17 января 2019

Мне нужно получить хост с этого URL

android-app://com.google.android.googlequicksearchbox?Pub_id={siteID} 

java.net.URL и java.net.URI не могут справиться с этим.

Ответы [ 3 ]

0 голосов
/ 17 января 2019

Вы можете попробовать следующий код

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 голосов
/ 07 февраля 2019

Видите ли, в конце концов мне нужны путь, схема и запрос.
Я только что нашел супер быструю библиотеку для разбора таких URL. https://github.com/anthonynsimon/jurl
Это также очень гибкий.

0 голосов
/ 17 января 2019

Проблема в символах { и }, которые недопустимы для URI.Похоже, заполнитель, который не был решен правильно при создании URI.

Вы можете использовать String.replaceAll(), чтобы избавиться от этих двух символов:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...