Мой вопрос: как разобрать URL-адрес, где протокол отличается?
String str = "olqmeeting://192.168.43.55/uam/meeting/meeting.php?id=A72U5AF9";
URL url = new URL(str);
Мой вопрос: как разобрать URL-адрес, где протокол отличается?
String str = "olqmeeting://192.168.43.55/uam/meeting/meeting.php?id=A72U5AF9";
URL url = new URL(str);
URLStreamHandler
, который знает, как обрабатывать протокол olqmeeting
, вы получите MalformedURLException
за неизвестный протокол. 26.10.2015 Вы можете использовать класс URI
для анализа этих URL-адресов. Это будет работать ... хотя вы ограничены операциями с самим URL-адресом, а не с ресурсом, на который он ссылается. (Дополнительную информацию см. в URI
javadoc. подробности.)
Если вы хотите, чтобы URL
работал (и имел возможность «подключаться» к ресурсу), вам необходимо реализовать и настроить URLStreamHandlerFactory
, который (минимально) понимает протокол URL-адреса и способы его обработки.
(Если вы не укажете ненулевой URLStreamHandlerFactory
явно при создании объекта URL
, конструктор попытается найти значение по умолчанию для протокола URL. Если он не может этого сделать, вы получите MalformedURLException
.)
URL имеет другие конструкторы, где вы можете определить протокол
URL(String protocol, String host, int port, String file)
Creates a URL object from the specified protocol, host, port number, and file.
URL(String protocol, String host, int port, String file, URLStreamHandler handler)
Creates a URL object from the specified protocol, host, port number, file, and handler.
URL(String protocol, String host, String file)
Creates a URL from the specified protocol name, host name, and file name.
В конце концов вы даже можете использовать метод .set()
, но он защищен, поэтому вам нужно реализовать новый пользовательский класс URL.