【问题标题】:Opening an URL from java从 java 打开 URL
【发布时间】:2012-09-10 09:07:04
【问题描述】:

我们正在为 bigquery 编写一个开源 jdbc 驱动程序,但遇到了以下问题:

我们希望授权我们的驱动程序使用 Oauth 2 作为已安装的应用程序。在 windows xp、windows 7 x64、windows 7 x64 + RDP 上运行良好。但是在 Windows Server 2008 R2 + RDP 的测试平台上它失败了。

基本上,我们打开一个网络浏览器,他登录,我们捕捉到回复,并对用户进行身份验证。

以下是网址打开的代码:

    private static void browse(String url) {
    // first try the Java Desktop
    logger.debug("First try the Java Desktop");
    if (Desktop.isDesktopSupported()) {
        Desktop desktop = Desktop.getDesktop();
        if (desktop.isSupported(Action.BROWSE))
            try {
                desktop.browse(URI.create(url));
                return;
            } catch (IOException e) {
                // handled below
            }
    }
    // Next try rundll32 (only works on Windows)
    logger.debug("Try the rundll32");
    try {
        Runtime.getRuntime().exec(
                "rundll32 url.dll,FileProtocolHandler " + url);
        return;
    } catch (IOException e) {
        // handled below
    }
    // Next try browsers
    logger.debug("Try with browsers");
    BareBonesBrowserLaunch.openURL(url);
}

我发现:BareBonesBrowserLaunch 没有打开链接,FileProtocolHandler 也没有。

网址长度略低于 250 个字符。

任何帮助将不胜感激!

【问题讨论】:

    标签: java url


    【解决方案1】:

    使用java.net.HttpURLConnection

    URL myURL = new URL("http://example.com/");
        URLConnection myURLConnection = myURL.openConnection();
        myURLConnection.connect();
    

    【讨论】:

    • 运行没有任何错误,但仍然没有打开任何带有该网址的浏览器。
    【解决方案2】:

    这是从不同角度提出的建议。 (不确定这是否适合您)

    您要解决的问题是使用 Oauth 2 和身份验证机制。而不是打开浏览器捕获其响应。已经有像Apache amber 这样的可用库纯粹在java 中

    这里有官方Amber Example,可以参考。

    【讨论】:

      【解决方案3】:

      基本上听起来不错,但如果您想使用特定浏览器打开(如果系统中有多个浏览器),这是另一种方式

      String url = "http:/devmain.blogspot.com/";
      String[] browsers = { "firefox", "opera", "mozilla", "netscape" }; // common browser names
      String browser = null;
      for (int count = 0; count < browsers.length && browser == null; count++)
        if (Runtime.getRuntime().exec(new String[] { "which", browsers[count] }).waitFor() == 0)
          browser = browsers[count]; // have found a browser
      Runtime.getRuntime().exec(new String[] { browser, url }) // open using a browser
      

      更多详情:http://devmain.blogspot.com/2013/10/java-how-to-open-url-in-browser.html

      【讨论】:

        猜你喜欢
        • 2015-12-12
        • 2015-01-31
        • 2015-03-19
        • 1970-01-01
        • 2013-04-04
        • 2013-02-10
        • 2019-07-23
        • 2020-11-06
        相关资源
        最近更新 更多