T
T
tenset2014-04-20 18:19:50
Java
tenset, 2014-04-20 18:19:50

How to navigate to Java URL?

I use the Desktop class

try {
          Desktop d=Desktop.getDesktop();

          d.browse(new URI("http://www.google.ru/search?sourceid=chrome&ie=UTF-8&q=Моя ссылка"));
    } catch (IOException ioe) {
      ioe.printStackTrace();
    } catch (URISyntaxException use) {
      use.printStackTrace();
    }

My link contains spaces, how do I convert the string so that no error occurs
java.net.URISyntaxException: Illegal character in query at index 61: http://www.google.ru/search?sourceid=chrome&ie=UTF-8&q=Иван Иванович
  at java.net.URI$Parser.fail(URI.java:2829)
  at java.net.URI$Parser.checkChars(URI.java:3002)
  at java.net.URI$Parser.parseHierarchical(URI.java:3092)
  at java.net.URI$Parser.parse(URI.java:3034)
  at java.net.URI.<init>(URI.java:595)
  at NewJFrame.jButton4ActionPerformed(NewJFrame.java:281)
  at NewJFrame.access$500(NewJFrame.java:5)
  at NewJFrame$6.actionPerformed(NewJFrame.java:91)
  at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
  at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
  at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
  at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
  at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
  at java.awt.Component.processMouseEvent(Component.java:6505)
  at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
  at java.awt.Component.processEvent(Component.java:6270)
  at java.awt.Container.processEvent(Container.java:2229)
  at java.awt.Component.dispatchEventImpl(Component.java:4861)
  at java.awt.Container.dispatchEventImpl(Container.java:2287)
  at java.awt.Component.dispatchEvent(Component.java:4687)
  at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
  at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
  at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
  at java.awt.Container.dispatchEventImpl(Container.java:2273)
  at java.awt.Window.dispatchEventImpl(Window.java:2719)
  at java.awt.Component.dispatchEvent(Component.java:4687)
  at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
  at java.awt.EventQueue.access$200(EventQueue.java:103)
  at java.awt.EventQueue$3.run(EventQueue.java:694)
  at java.awt.EventQueue$3.run(EventQueue.java:692)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
  at java.awt.EventQueue$4.run(EventQueue.java:708)
  at java.awt.EventQueue$4.run(EventQueue.java:706)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
  at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
  at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
  at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
  at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Answer the question

In order to leave comments, you need to log in

3 answer(s)
T
tenset, 2014-04-20
@tenset

All spaces must be replaced with '+'

N
nowm, 2014-04-20
@nowm

You can use the encode method of the URLEncoder class. Only it is not necessary to distill the entire line with the address through encode, but only GET variables. You can do it like this:

try {
    Desktop d=Desktop.getDesktop();

    d.browse(new URI(
        String.format( 
            "http://www.google.ru/search?sourceid=chrome&ie=UTF-8&q=%s", 
            URLEncoder.encode( "запрос с кучей пробелов" , "UTF8" )
        )
    ));
} catch (IOException ioe) {
    ioe.printStackTrace();
} catch (URISyntaxException use) {
    use.printStackTrace();
}

T
tenset, 2014-04-20
@tenset

There are no problems with a link containing Russian characters without spaces.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question