s
Posts: 23
Nickname: codemonkey
Registered: Nov, 2003
|
|
Re: Client to Browser Communication
|
Posted: Nov 5, 2003 12:34 PM
|
|
heres how we do it from java apps... of course applets are a simple matter of calling the AppletContext showDocument method ....of course you are limited to talking to the server from which the applet was served...Hope that helped a little ...
/** * A simple, static class to display a URL in the system browser. * * Under Unix, the system browser is hard-coded to be 'netscape'. * Netscape must be in your PATH for this to work. This has been * tested with the following platforms: AIX, HP-UX and Solaris. * * Under Windows, this will bring up the default browser under windows, * usually either Netscape or Microsoft IE. The default browser is * determined by the OS. This has been tested under Windows 95/98/NT. * * Examples: * BrowserControl.displayURL("http://www.javaworld.com") * BrowserControl.displayURL("file://c:\\docs\\index.html") * BrowserContorl.displayURL("file:///user/joe/index.html"); * * Note - you must include the url type -- either "http://" or * "file://". * * This class was taken from * http://www.javaworld.com/javaworld/javatips/jw-javatip66.html article * written by Steven Spencer * */ public class BrowserControl { // Used to identify the windows platform. private static final String WIN_ID = "Windows"; // The command for launching a browser in Windows private static final String WIN_CMD = "cmd /c start"; // The browser to display a url. Should be iexplore or netscape private static final String WIN_BROWSER = "iexplore"; // The default browser under unix. private static final String UNIX_PATH = "netscape"; // The flag to display a url. private static final String UNIX_FLAG = "-remote openURL";
/** * Display a file in the system browser. If you want to display a * file, you must include the absolute path name. * * @param url the file's url which must start with either "http://" or * "file://". */ public static void displayURL(String url){ boolean windows = isWindowsPlatform(); String cmd = null; try { if(windows){ // used to be cmd = 'rundll32 url.dll,FileProtocolHandler http://...' cmd = WIN_CMD + " " + WIN_BROWSER + " \"" + url + "\""; Process p = Runtime.getRuntime().exec(cmd); } else{ // Under Unix, Netscape has to be running for the "-remote" // command to work. So, we try sending the command and // check for an exit value. If the exit command is 0, // it worked, otherwise we need to start the browser. // cmd = 'netscape -remote openURL(http://www.javaworld.com)' // cmd = UNIX_PATH + " " + UNIX_FLAG + "(" + url + ")"; cmd = UNIX_PATH + " " + UNIX_FLAG + "(" + url + ",new-window)";
Process p = Runtime.getRuntime().exec(cmd); try { // wait for exit code -- if it's 0, command worked, // otherwise we need to start the browser up. int exitCode = p.waitFor(); if (exitCode != 0){ // Command failed, start up the browser // cmd = 'netscape http://www.javaworld.com' cmd = UNIX_PATH + " " + url; p = Runtime.getRuntime().exec(cmd); } } catch(InterruptedException x){ Debug.println("Error bringing up browser, cmd='" + cmd + "'"); Debug.println("Caught: " + x); } } } catch(IOException x){ // couldn't exec browser Debug.println("Could not invoke browser, command=" + cmd); Debug.println("Caught: " + x); } }
/** * Try to determine whether this application is running under Windows * or some other platform by examing the "os.name" property. * * @return true if this application is running under a Windows OS */ private static boolean isWindowsPlatform() { boolean isWindows = false; String os = System.getProperty("os.name"); isWindows = os != null && os.startsWith(WIN_ID); return isWindows; }
/** * Simple example. */ public static void main(String[] args) { displayURL("http://www.javaworld.com"); } }
|
|