Как перейти по URL Java?

Пользуюсь классом Desktop
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();
    }


Моя ссылка содержит пробелы, как преобразовать строку, чтобы не возникала ошибка
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)
  • Вопрос задан
  • 5573 просмотра
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 3
Можно воспользоваться методом encode класса URLEncoder. Только нужно не всю строку с адресом перегонять через encode, а только GET-переменные. Можно так сделать:

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();
}
Ответ написан
tencet
@tencet Автор вопроса
С ссылкой содержащей русские символы без пробелов не возникает проблем.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 100 000 до 150 000 ₽
КУРС Москва
от 80 000 до 150 000 ₽
Farpost Владивосток
от 120 000 до 200 000 ₽