2010-03-09 11 views
23

URL u = nueva URL ("telnet: //route-server.exodus.net");¿por qué la clase de URL de java no reconoce ciertos protocolos?

Esta línea está generando:

java.net.MalformedURLException: protocolo desconocido: telnet

Y me encuentro con problemas similares con otras URL que comienzan con "noticias: //"

Son URL extraídos de PAO, por lo que no puedo entender por qué surgen estas excepciones ..

+0

Gracias a todos, aprendí algo nuevo .. – trinity

Respuesta

40

Edición

Java arroja un MalformedURLException porque no pudo encontrar un URLStreamHandler para ese protocolo. Compruebe el javadocs de los constructores para los detalles.

Resumen:

Puesto que la clase tiene un método URLopenConnection, los controles de la clase URL para asegurarse de que Java sabe cómo abrir una conexión del protocolo correcto. Sin un URLStreamHandler para ese protocolo, Java se niega a crear un URL para evitar errores cuando intente llamar al openConnection.

Solución

Probablemente debería estar utilizando la clase URI si usted no planea abrir una conexión de esos protocolos en Java.

+0

o, uno puede implementar su propio URLStreamHandler –

+1

Muchas gracias. La clase de URI es la solución para mí. – Liuting

+0

¿Todavía puedo enviar datos (usando URI)? – Lealo

4

Parece que no hay un controlador registrado para el protocolo "telnet" en su aplicación. Dado que la clase de URL se puede utilizar para abrir un InputStream en URL, necesita tener un controlador registrado para que el protocolo realice este trabajo si se le permite crear un objeto que lo use.

Para más detalles sobre cómo agregar controladores de ver: http://docs.oracle.com/javase/7/docs/api/java/net/URLStreamHandlerFactory.html

+0

El enlace está roto. –

+0

@CookieMonster gracias. Arreglado. –

2

La respuesta simple es que solo hace reconoce ciertos protocolos, y el resto de la infinidad de protocolos no se reconoce.

Cuestiones relacionadas