• Domingo 22 de Septiembre de 2024, 01:32

Autor Tema:  Acerca De La Url  (Leído 2364 veces)

jpaler

  • Miembro MUY activo
  • ***
  • Mensajes: 479
    • Ver Perfil
Acerca De La Url
« en: Miércoles 22 de Febrero de 2006, 12:14 »
0
...,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

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Acerca De La Url
« Respuesta #1 en: Miércoles 22 de Febrero de 2006, 15:01 »
0
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
  1.  
  2. import java.net.*;
  3.  
  4.  
  5. public class Test_Java1 extends Thread {
  6.  
  7.  
  8.   public static void main(String args[]){
  9.     try{
  10.       URL url1= new URL("http://solocodigo.com/prueba/prueba1/index.html");
  11.       System.out.println(url1);
  12.       URL url2= new URL(url1, "../saliendo1.html");
  13.       System.out.println(url2);
  14.       url2= new URL(url1, "../../saliendo2.html");
  15.       System.out.println(url2);
  16.       url2= new URL(url1, "entrando1/dentro.html");
  17.       System.out.println(url2);
  18.       url2= new URL(url1, "conquery/query.html?mi_query");
  19.       System.out.println(url2);  
  20.       url2= new URL(url1, "conref/ref.html#mi_ref");
  21.       System.out.println(url2);
  22.       url2= new URL(url1, "//fallando/index.html");
  23.       System.out.println(url2);        
  24.     } catch (Exception e){}
  25.  
  26.   }
  27.  
  28. }
  29.  
  30.  



Espero que te sirva.
Suerte.


Silverfox

jpaler

  • Miembro MUY activo
  • ***
  • Mensajes: 479
    • Ver Perfil
Re: Acerca De La Url
« Respuesta #2 en: Jueves 23 de Febrero de 2006, 20:17 »
0
listo...silver....ya lo logre....
...,por fin pude cargar el bendito html en el JEditorPane.

GRACIAS...

jpaler

  • Miembro MUY activo
  • ***
  • Mensajes: 479
    • Ver Perfil
Re: Acerca De La Url
« Respuesta #3 en: Viernes 24 de Febrero de 2006, 12:52 »
0
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
  1.  
  2.     void epNavegador_hyperlinkUpdate( HyperlinkEvent e ) {
  3.         if ( e.getEventType() == HyperlinkEvent.EventType.ACTIVATED ) {
  4.             if ( e instanceof HTMLFrameHyperlinkEvent ) {
  5.                 ( ( HTMLDocument )epNavegador.getDocument() ).             processHTMLFrameHyperlinkEvent( ( HTMLFrameHyperlinkEvent )e );
  6.             }
  7.             else {
  8.                 try {
  9.                     //AQUI HAGO EL CAMBIO DE PAGINA DEL NAVEGADOR
  10.                     epNavegador.setPage( e.getURL() );
  11.                 }
  12.                 catch ( IOException ioe ) {   }
  13.             }
  14.         }
  15.     }
  16.  
  17.  

...,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

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Acerca De La Url
« Respuesta #4 en: Lunes 27 de Febrero de 2006, 11:24 »
0
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
  1. JEditorPane contents;
  2. HTMLEditorKit kit = new HTMLEditorKit();
  3. HTMLDocument htmlDoc = new HTMLDocument();
  4. contents.setEditorKit(kit);
  5. contents.setDocument(htmlDoc);
  6.  
  7. URL url = new URL("http://blahblahblah.com");
  8. contents.read(url.openStream(), htmlDoc);
  9.  
  10. private void parseElements(Element elem) {
  11.     AttributeSet atts = elem.getAttributes();
  12.  
  13.     //If this is the submit button, add a listener:
  14.          Object model = atts.getAttribute(StyleConstants.ModelAttribute);
  15.          Object type = atts.getAttribute(HTML.Attribute.TYPE);
  16.          if ((type != null) && (type.equals("submit"))) {
  17.              DefaultButtonModel btn = (DefaultButtonModel) model;
  18.              btn.addActionListener(new ActionListener() {
  19.                  public void actionPerformed(ActionEvent event) {
  20.                      System.out.println("Yay!");
  21.                  }
  22.              });
  23.          }
  24.     }
  25.  
  26.     //Recurse
  27.     for (int i = 0; i < elem.getElementCount(); i++)
  28.          parseElements(elem.getElement(i));
  29. }
  30.  

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

jpaler

  • Miembro MUY activo
  • ***
  • Mensajes: 479
    • Ver Perfil
Re: Acerca De La Url
« Respuesta #5 en: Miércoles 1 de Marzo de 2006, 02:32 »
0
Uy amigo silver...te cuento:  ¡¡¡ q cosa tan complicada !!!
...,pense q con el solo hecho de hacer click en el boton submit java haria todo...
pero no....

Estube viendo la informacion q me distes y buscando tambien por la red,
pero aun veo todo este asunto esta un tanto raro (a pesar de lo del bug).

mira lo q llevo hasta ahora:

Código: Text
  1.  
  2. KitDeEdicion ke=new KitDeEdicion();
  3. JEditorPane ep=new JEditorPane();
  4.   ...
  5. ep.setEditorKit(ke);
  6.  
  7.  

Código: Text
  1.  
  2. public class KitDeEdicion extends HTMLEditorKit {
  3.     private static final ViewFactory defaultFactory = new HTMLFactory2();
  4.  
  5.     KitDeEdicion() {
  6.         super();
  7.     }
  8.     public ViewFactory getViewFactory() {
  9.         return defaultFactory;
  10.     }
  11.  
  12.     public static class HTMLFactory2 extends HTMLFactory implements ViewFactory {
  13.         HTMLFactory2() {
  14.             super();
  15.         }
  16.  
  17.         public View create( Element elem ) {
  18.             View v = super.create( elem );
  19.             if(v instanceof FormView){
  20.                 return (new FormView2(elem));
  21.             }
  22.             return  v;
  23.         }
  24.     }
  25.  
  26.  



Código: Text
  1.  
  2. public class FormView2 extends FormView implements ActionListener {
  3.     FormView2(Element elem){
  4.         super(elem);
  5.     }
  6.  
  7.      public void actionPerformed(ActionEvent evt) {
  8.          super.actionPerformed(evt);
  9.          JOptionPane.showMessageDialog(null,"dio click");
  10.      }      
  11. }
  12.  
  13.  


...mira todo lo que me ha tocado hacer (y de hecho me durado casi todo el dia
en esta tonteria)...y ¿sabes q es lo q hace esto?
...lo unico q hace es mostrar un cuadro de dialogo cuando el usuario hace click
en un boton de la pagina.

amigo silver, ahora me falta hacerle para q salte a la pagina del subnit o algo asi,
pero no tengo idea de como conseguir el link a donde debo enviar los datos o algo asi.

seguire averiguando a pa' ver como sale todo esto.

gracias amigo, por colaborar tanto aqui en el forito.

jpaler

  • Miembro MUY activo
  • ***
  • Mensajes: 479
    • Ver Perfil
Re: Acerca De La Url
« Respuesta #6 en: Miércoles 1 de Marzo de 2006, 02:41 »
0
continuacion...

por lo menos ya capturo cuando alguien hace click en un boton de la pagina,
ahora me toca comparar si ese boton es el de submit (esto es relativamente facil)
y luego faltaria tomar los datos del form y anviarlos, pero el problemita es
enviarlos a donde o q?, a q link? y peor aun como los envio?.

...sinceramente aun tengo la esperanza de q exista una forma + sencilla de hacer
todo esto.

amigo silver....echale un vistazo al codigo de arriba y a ver q opinas.
listo.

muchas gracias amigo.........

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Acerca De La Url
« Respuesta #7 en: Miércoles 1 de Marzo de 2006, 09:44 »
0
Es más sencillo de lo que piensas. En realidad, ya casi lo tienes.

El método submitData(String) te permite enviar un formulario. En cuanto al lugar, por si quieres saberlo (no creo que te haga falta). Todos los FORM en html tienen un atributo (action) que indica a qué página se enviará. Si no tienen, se asume que por defecto, es la misma página que la actual.

Mira lo que he encontrado, seguro que es mucho más explicativo que lo que yo pueda contarte.


http://www.javaworld.com/javaworld/jw-11-2...14-toolbox.html


En especial, la página 4, que trata de los formularios...
El código se parece bastante a lo que has posteado... quizá te sirva para depurar algunas cosas más...  ;)



Suerte.




Silverfox

jpaler

  • Miembro MUY activo
  • ***
  • Mensajes: 479
    • Ver Perfil
Re: Acerca De La Url
« Respuesta #8 en: Domingo 5 de Marzo de 2006, 14:35 »
0
hola silver....
...,pues bien, desesperado con el temita del navegador web en java, decidi
tomar el camino facil:
mira, recuedas la libreria jdic q me recomendaste, te cuento q entre las cosas
q tiene esta una clase llamada WebBrowser (q tal la libreria, ahh).
...,pues bien, no me complique y la utilize (de hecho estoy escribiendo
ahora mismo en el navegadorcito, esta bueno pa q'),
aqui esta el cod:

Código: Text
  1.  
  2.     WebBrowser webBrowser = new WebBrowser();
  3.     webBrowser.addWebBrowserListener(  new WebBrowserListener() {
  4.             public void downloadStarted(WebBrowserEvent event) {
  5.              &#59;
  6.             }
  7.             public void downloadCompleted(WebBrowserEvent event) {
  8.              &#59;
  9.             }
  10.             public void downloadProgress(WebBrowserEvent event) {
  11.              &#59;
  12.             }
  13.             public void downloadError(WebBrowserEvent event) {
  14.              &#59;
  15.             }
  16.             public void documentCompleted(WebBrowserEvent event) {
  17.              &#59;
  18.             }
  19.             public void titleChange(WebBrowserEvent event) {
  20.              &#59;
  21.             }
  22.             public void statusTextChange(WebBrowserEvent event) {
  23.              &#59;
  24.             }
  25.         });
  26.  
  27.         try {
  28.             webBrowser.setURL(new URL("http://www.google.com"));
  29.         } catch (MalformedURLException e) {
  30.             System.out.println(e.getMessage());
  31.             return;
  32.         }
  33.  
  34.  
  35.  

CONCLUSIONES:
  LO BUENO: facil, rapido, y como ves te ofrece 6 eventos importantes y
                     necesarios.
   LO MALO:  no es java puro, se mete con las Dll's del windoZer, y ya sabes
                    habria q tener en cuenta la portabilidad (pero igual hay una
                    libreria jdic para otras plataformas, jejeje).


Amigos..esto es todo.........
...,con este codigo ya tienen un navegador web normalito....

gracias..........

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Acerca De La Url
« Respuesta #9 en: Lunes 6 de Marzo de 2006, 14:13 »
0
La teoría es que, efectivamente, debe haber otras bibliotecas JDIC para otros entornos, así que, en un principio, todo esto debería ser portable...


Y si no... ya sabes... si te ofreces voluntario...   ;)




Al final te diste por vencido por el otro camino... vaya, me hubiera gustado ver cómo quedaban las cosas...

Y sí, te da cosas bastante interesantes, pero lo mejor es que maneja solito el tema de los botones de las páginas web.


Pues nada, disfruta tu nuevo navegador. :P


Un saludo.


Silverfox