мне нужно, чтобы разобрать URL-адреса, которые могут содержать протоколы, отличающиеся от http
или https
... и с тех пор, если попытаться создать java.net.URL
объект с URL, как nio://localhost:61616
сбои конструктора, я ве реализовано что-то вроде этого:Scala: Как разобрать URL с помощью пользовательских протоколов
def parseURL(spec: String): (String, String, Int, String) = {
import java.net.URL
var protocol: String = null
val url = spec.split("://") match {
case parts if parts.length > 1 =>
protocol = parts(0)
new URL(if (protocol == "http" || protocol == "https") spec else "http://" + parts(1))
case _ => new URL("http" + spec.dropWhile(_ == '/'))
}
var port = url.getPort; if (port < 0) port = url.getDefaultPort
(protocol, url.getHost, port, url.getFile)
}
в случае, если данный URL содержит протокол, отличный от http
или https
, я сохранить его в переменной, а затем я заставляю http
позволить java.net.URL
разобрать его без сбоев.
Есть ли более элегантный способ решить эту проблему?
У вас есть причина, по которой вы не можете использовать 'java.net.URI' вместо' java.net.URL'? http://stackoverflow.com/questions/2406518/why-does-javas-url-class-not-recognize-certain-protocols – ymonad
Да ... это работает. Спасибо, я не понял ;-) – j3d