1

bigquery用のオープンソースのjdbcドライバーを作成していて、次の問題が発生しました。

インストールされたアプリケーションとしてOauth2を使用してドライバーを承認したいと思います。Windows XP、Windows 7 x64、Windows 7 x64 + RDPでは、正常に動作します。しかし、Windows Server 2008 R2 + RDPであるテストベンチでは、失敗します。

基本的に、Webブラウザーを開き、彼がログインし、応答をキャッチして、ユーザーを認証します。

URLを開くためのコードは次のとおりです。

    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も開かないということです。

URLの長さは250文字弱です。

どんな援助もいただければ幸いです!

4

3 に答える 3

3

使用するjava.net.HttpURLConnection

URL myURL = new URL("http://example.com/");
    URLConnection myURLConnection = myURL.openConnection();
    myURLConnection.connect();
于 2012-09-10T09:10:20.870 に答える
1

これは別の観点からの提案です。(これがあなたの選択肢かどうかわからない)

解決しようとしている問題は、Oauth2と認証メカニズムを使用することです。ブラウザを開いてその応答をキャプチャする代わりに。これを純粋にJavaで行うApacheamberのような利用可能なライブラリがすでにあります。

これが参照できる公式の琥珀色の例です。

于 2012-09-10T10:52:23.237 に答える
1

基本的には良さそうですが、特定のブラウザを使用して開く場合は、別の方法があります(システムに複数のブラウザがある場合)。

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

于 2013-10-21T10:40:32.973 に答える