使用以下代码片段,如果docurl =“about:blank”,则抛出java.net.MalformedURLException。我不能相信我是第一个必须处理这些网址的人所以我想知道是否存在与我可以使用的java.net不同的API?
try {
URL url;
url = new URL(docurl);
docuri = new URI(url.getProtocol(), url.getHost(), url.getPath(), url.getQuery(), null);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
}
答案 0 :(得分:2)
问题在于“约”协议没有有效的处理程序。
我的jre6安装的有效处理程序可以在rt.jar
中找到sun/net/www/protocol/ftp/Handler.class
sun/net/www/protocol/gopher/Handler.class
sun/net/www/protocol/http/NegotiateCallbackHandler.class
sun/net/www/protocol/mailto/Handler.class
sun/net/www/protocol/netdoc/Handler.class
sun/net/www/protocol/http/Handler.class
sun/net/www/protocol/jar/Handler.class
sun/net/www/protocol/file/Handler.class
您可以按照配方来创建自己的处理程序类 http://java.sun.com/developer/onlineTraining/protocolhandlers/
答案 1 :(得分:0)
您可以使用 java.net.URI 解析此类网址。
或者,我编写了一个Java URL解析库,它提供了更通用的解决方案:galimatias。