Programación General > Java

 Acerca De La Url

(1/2) > >>

jpaler:
...,amigos, lo q pense q era tonto y sencillo, al parecer como q no lo es.
miren: necesito cargar una pagina en un JEditorPane, pero he tenido
problemas al formar la URL q se le pasa al editor.

pense q la URL se formaba igual q la ruta de un File o algo asi, pero no,
como q no acepta rutas relativas.

bueno, el cuento es q necesito formar una URL correcta, si alguien tiene alguna
ideita por hay de como hacerlo, PUES MUCHISIMAS GRACIAS.

silverfox:
Hola...

No entiendo exactamente qué es lo que te está ocurriendo. Si lo que creo es cierto, supongo que te refieres a cómo puedes generar una URL válida relativa a otra URL que ya tengas cargada.

Es sencillo: Utiliza el siguiente constructor para la clase URL:

URL (URL context, String spec)

el parámetro context será la URL que tienes en este momento. El parámetro spec es la ruta relativa que quieres aplicar. Echa un vistazo al API para ver el comportamiento completo de esta clase.

Aquí tienes un código de ejemplo, ejecutalo para que veas lo que hace (atención especial a la última transformación):


--- Código: Text --- import java.net.*;  public class Test_Java1 extends Thread {    public static void main(String args[]){    try{      URL url1= new URL("http://solocodigo.com/prueba/prueba1/index.html");      System.out.println(url1);      URL url2= new URL(url1, "../saliendo1.html");      System.out.println(url2);      url2= new URL(url1, "../../saliendo2.html");      System.out.println(url2);      url2= new URL(url1, "entrando1/dentro.html");      System.out.println(url2);      url2= new URL(url1, "conquery/query.html?mi_query");      System.out.println(url2);        url2= new URL(url1, "conref/ref.html#mi_ref");      System.out.println(url2);      url2= new URL(url1, "//fallando/index.html");      System.out.println(url2);            } catch (Exception e){}   } }  


Espero que te sirva.
Suerte.


Silverfox

jpaler:
listo...silver....ya lo logre....
...,por fin pude cargar el bendito html en el JEditorPane.

GRACIAS...

jpaler:
uy...pero hay otro problemita...

...,me conecto a internet y abre perfectamente las paginas de yahoo y otras,
tambien entra en google y todo bien, le doy click en los enlaces de google y todo bien, pero cuando escribo algo en google y doy buscar: ah ah...nada, no hace
nada, miren aqui esta un pedasito del codigo:


--- Código: Text ---     void epNavegador_hyperlinkUpdate( HyperlinkEvent e ) {        if ( e.getEventType() == HyperlinkEvent.EventType.ACTIVATED ) {            if ( e instanceof HTMLFrameHyperlinkEvent ) {                ( ( HTMLDocument )epNavegador.getDocument() ).             processHTMLFrameHyperlinkEvent( ( HTMLFrameHyperlinkEvent )e );            }            else {                try {                    //AQUI HAGO EL CAMBIO DE PAGINA DEL NAVEGADOR                    epNavegador.setPage( e.getURL() );                }                catch ( IOException ioe ) {   }            }        }    }  
...,al parecer solo cambio de pagina solo cuando hago click en un enlace...
amigos, y ¿como le hago para hacer q la pagina tambien cambie cuando
le doy en un boton (o submit o lo q sea)?

silverfox:
Hola de nuevo.
Ese navegador te está dando bastantes problemas ¿eh?  :P . Animo, que casi lo tienes...

Si echas un vistazo al código de google, te darás cuenta de que son botones de submit, efectivamente.

No he hecho nunca esto, pero buscando por Sun he encontrado algo que te puede ser útil:

(sacado de: http://forum.java.sun.com/thread.jspa?foru...threadID=414212)


--- Código: Text ---JEditorPane contents;HTMLEditorKit kit = new HTMLEditorKit();HTMLDocument htmlDoc = new HTMLDocument();contents.setEditorKit(kit);contents.setDocument(htmlDoc); URL url = new URL("http://blahblahblah.com");contents.read(url.openStream(), htmlDoc); private void parseElements(Element elem) {    AttributeSet atts = elem.getAttributes();     //If this is the submit button, add a listener:         Object model = atts.getAttribute(StyleConstants.ModelAttribute);         Object type = atts.getAttribute(HTML.Attribute.TYPE);         if ((type != null) && (type.equals("submit"))) {             DefaultButtonModel btn = (DefaultButtonModel) model;             btn.addActionListener(new ActionListener() {                 public void actionPerformed(ActionEvent event) {                     System.out.println("Yay!");                 }             });         }    }     //Recurse    for (int i = 0; i < elem.getElementCount(); i++)         parseElements(elem.getElement(i));} 
Este es el código con el que, se supone, que algunas personas de los foros han resuelto ese problema.



Esto, como una forma de hacerlo.

He encontrado otra explicación al fallo, que creo que es más correcta que parsear la página web en busca de botones de submit, más que nada, porque en google, por ejemplo, todos los botones son de submit, así que mal ibas a poder parsear a ver qué botón es el que estás pulsando.

Según Sun, el submit no está soportado por el JEditorPane y no produce eventos capturables con el HyperlinkListener.
Pero como donde hay problemas hay soluciones, echa un vistazo a la clase FormView en la documentación, que con ella sí que se puede hacer un post de un formulario.
(más info en: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4465905)


Lo que no puedo es ayudarte a integrar esa clase ni darte código de ejemplo, porque nunca he trabajado con ello. Cuando tengas algo, postealo para ver cuál es la solución. Los foros de Sun están bastante copados con esta pregunta, pero no hay respuesta...


Espero que te sirva de algo.
Suerte con ello.



Silverfox

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa