Выполнение команд URI в Java - PullRequest
       2

Выполнение команд URI в Java

4 голосов
/ 02 сентября 2011

Одним из способов, с помощью которого Steam позволяет пользователям запускать игры и выполнять множество других операций, является использование протоколов URI, например (из сообщества разработчиков Valve ):

steam://run/<id> запустит игру, соответствующую указанному идентификатору.

steam://validate/<id> проверит файлы игры с указанным идентификатором.

Как я могу заставить Java «запускать» их? Я даже не знаю, как вы это называете, то есть вы «запускаете» URI или «выполняете» их, или как? Потому что, безусловно, эти URI не должны ничего возвращать, а класс URI в Java не имеет ничего общего с их «выполнением», однако URL делает, но это не работает!

Я пробовал это:

...
try
{
    URI testURI = URI.create("steam://run/240");
    URL testURL = joinURI.toURL();
    // URL testURL = new URL("steam://run/240") doesn't work either
    joinURL.openConnection(); // Doesn't work
    // joinURL.openStream() doesn't work either
}
catch (MalformedURLException e)
{
    System.err.println(e.getMessage());
}
...

Каждая комбинация выдает ошибку: unknown protocol: steam.

Система, которую Steam использует для обработки URI, определенно работает, потому что, например, я могу набрать вышеупомянутый URI в Firefox, и он работает.

Моя вечная благодарность человеку, который дает ответ!

Спасибо

Ответы [ 3 ]

7 голосов
/ 02 сентября 2011

Попробуйте Desktop.browse(URI), это должно запустить «действие по умолчанию», которое является клиентом Steam для steam:// URI, например,

URI uri = new URI("steam://store/240");
if (Desktop.isDesktopSupported()) {
    Desktop.getDesktop().browse(uri);
}
0 голосов
/ 02 сентября 2011

A Унифицированный идентификатор ресурса (URI) просто идентифицирует ресурс, он не обязательно описывает, как получить к нему доступ.Более того, для пользовательских протоколов, таких как «steam», поставщик может определить любые базовые соглашения о доступе, которые совместимые клиентские программы должны знать для взаимодействия.

Чтобы «выполнить» URI, подобный этому, необходимо точно знать, какпротокол реализован (это через HTTP? TCP? UDP?) и как разговаривать с сервером на другом конце.

Вики-страница сообщества разработчиков Valve может содержать некоторую полезную информацию.

0 голосов
/ 02 сентября 2011

Система, которую Steam использует для обработки URI, определенно работает, потому что, например, я могу набрать вышеупомянутый URI в Firefox, и он работает.

Это работает, потому что Firefox (или другие браузеры) могут связывать неизвестные протоколы с приложениями. Когда вы загружаете steam://xxx в первый раз, Firefox спросит вас, какое приложение вы хотите открыть. Если он не спрашивал вас, Steam, вероятно, установил плагин для браузера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...