Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web浏览器与java的通信_Java_Browser_Web_Communication - Fatal编程技术网

Web浏览器与java的通信

Web浏览器与java的通信,java,browser,web,communication,Java,Browser,Web,Communication,我正在用PHP html/Ajax开发一个私有网站,用Java开发一个客户端程序 我刚刚看到苹果可以通过Firefox或其他方式打开iTunes来加载内容 我想做同样或更好的事情: 我试着制作一个程序,它可以与javascript“对话”,或者只编写一个锁文件(tempfile),这样就可以通过这个程序获取数据,我试着至少获得一个通信Web浏览器->java,但如果可能的话,我更愿意进行双向通信 因此,如果有人有任何解决方案,那将是非常好的,因为我用谷歌搜索了它,我用html5尝试了本地存储,用

我正在用PHP html/Ajax开发一个私有网站,用Java开发一个客户端程序

我刚刚看到苹果可以通过Firefox或其他方式打开iTunes来加载内容

我想做同样或更好的事情:

我试着制作一个程序,它可以与javascript“对话”,或者只编写一个锁文件(tempfile),这样就可以通过这个程序获取数据,我试着至少获得一个通信Web浏览器->java,但如果可能的话,我更愿意进行双向通信


因此,如果有人有任何解决方案,那将是非常好的,因为我用谷歌搜索了它,我用html5尝试了本地存储,用javascript尝试了文件访问……没有什么真正有效的方法,我不希望程序每次都问服务器。

你可以用多种方法来做,但你必须记住。我一直在用插座做这个

1-您需要一个网桥来将您的web与您的服务器通信这可以通过java小程序或flash套接字网桥来完成,这样您就可以调用您的服务器和javascript客户端代码

2-您需要在服务器中使用url重定向规则,这样当您的客户端发出请求时,它总是在同一个域中发出请求,但最终到达套接字服务器所在的位置。客户端不能转到其他域,但服务器可以。这是跳过跨域限制所必需的


我希望这能有所帮助。

你可以用很多方法来做这件事,但你必须记住这一点。我一直在用插座做这个

1-您需要一个网桥来将您的web与您的服务器通信这可以通过java小程序或flash套接字网桥来完成,这样您就可以调用您的服务器和javascript客户端代码

2-您需要在服务器中使用url重定向规则,这样当您的客户端发出请求时,它总是在同一个域中发出请求,但最终到达套接字服务器所在的位置。客户端不能转到其他域,但服务器可以。这是跳过跨域限制所必需的

我希望这会有所帮助。

您可以看看允许将Google Chromium引擎嵌入Java Swing应用程序的库。您可以使用此库将浏览器组件嵌入到客户端Java应用程序中,并加载PHP网页,就像iTunes加载App Store一样

它为Java到JavaScript到Java的双向通信提供API:

下面的代码演示了如何嵌入浏览器组件、加载URL、在加载的网页上调用JavaScript代码以及在JavaScript端注册Java函数,每次JavaScript调用该函数时都会调用该函数:

import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserFactory;
import com.teamdev.jxbrowser.chromium.BrowserFunction;
import com.teamdev.jxbrowser.chromium.JSValue;
import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent;
import com.teamdev.jxbrowser.chromium.events.LoadAdapter;

/**
 * The sample demonstrates how to register a new JavaScript function and
 * map it to a Java method that will be invoked every time when the JavaScript
 * function is invoked.
 */
public class JavaScriptJavaSample {
    public static void main(String[] args) {
        Browser browser = BrowserFactory.create();
        // Register "MyFunction" JavaScript function and associate Java callback with it
        browser.registerFunction("MyFunction", new BrowserFunction() {
            public JSValue invoke(JSValue... args) {
                for (JSValue arg : args) {
                    System.out.println("arg = " + arg);
                }
                return JSValue.create("Hello!");
            }
        });

        // Create JFrame and embed Browser component to display web pages
        JFrame frame = new JFrame();
        frame.add(browser.getView().getComponent(), BorderLayout.CENTER);
        frame.setSize(800, 600);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

        // Register Load listener to get notification when web page is loaded completely
        browser.addLoadListener(new LoadAdapter() {
            @Override
            public void onFinishLoadingFrame(FinishLoadingEvent event) {
                if (event.isMainFrame()) {
                    Browser browser = event.getBrowser();
                    // Invoke our registered JavaScript function
                    JSValue returnValue = browser.executeJavaScriptAndReturnValue(
                            "MyFunction('Hello JxBrowser!', 1, 2, 3, true);");
                    System.out.println("return value = " + returnValue);
                }
            }
        });
        browser.loadURL("about:blank");
    }
}
您可以看看允许将GoogleChromium引擎嵌入JavaSwing应用程序的库。您可以使用此库将浏览器组件嵌入到客户端Java应用程序中,并加载PHP网页,就像iTunes加载App Store一样

它为Java到JavaScript到Java的双向通信提供API:

下面的代码演示了如何嵌入浏览器组件、加载URL、在加载的网页上调用JavaScript代码以及在JavaScript端注册Java函数,每次JavaScript调用该函数时都会调用该函数:

import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserFactory;
import com.teamdev.jxbrowser.chromium.BrowserFunction;
import com.teamdev.jxbrowser.chromium.JSValue;
import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent;
import com.teamdev.jxbrowser.chromium.events.LoadAdapter;

/**
 * The sample demonstrates how to register a new JavaScript function and
 * map it to a Java method that will be invoked every time when the JavaScript
 * function is invoked.
 */
public class JavaScriptJavaSample {
    public static void main(String[] args) {
        Browser browser = BrowserFactory.create();
        // Register "MyFunction" JavaScript function and associate Java callback with it
        browser.registerFunction("MyFunction", new BrowserFunction() {
            public JSValue invoke(JSValue... args) {
                for (JSValue arg : args) {
                    System.out.println("arg = " + arg);
                }
                return JSValue.create("Hello!");
            }
        });

        // Create JFrame and embed Browser component to display web pages
        JFrame frame = new JFrame();
        frame.add(browser.getView().getComponent(), BorderLayout.CENTER);
        frame.setSize(800, 600);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

        // Register Load listener to get notification when web page is loaded completely
        browser.addLoadListener(new LoadAdapter() {
            @Override
            public void onFinishLoadingFrame(FinishLoadingEvent event) {
                if (event.isMainFrame()) {
                    Browser browser = event.getBrowser();
                    // Invoke our registered JavaScript function
                    JSValue returnValue = browser.executeJavaScriptAndReturnValue(
                            "MyFunction('Hello JxBrowser!', 1, 2, 3, true);");
                    System.out.println("return value = " + returnValue);
                }
            }
        });
        browser.loadURL("about:blank");
    }
}

对于安全问题,不能使用纯HTML+Javascript。你必须构建一个小程序,客户端应该将它安装在他/她的机器上,以进行你正在寻找的文件操作。对于安全问题,你不能使用纯HTML+Javascript。您必须构建一个小程序,客户机应该将其安装在他/她的计算机中,以执行您要查找的文件操作。