Jef*_*ano 5 java javafx javafx-8
我需要从没有得到的JavaFX应用程序访问WhatsApp Web。当页面打开时,我收到一条消息,要求使用其他浏览器。我试图更改UserAgent,但是它不起作用。
码:
WebEngine eng = webView.getEngine();
eng.load("https://web.whatsapp.com/");
eng.setJavaScriptEnabled(true);
eng.setUserAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36");
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
我无法从 JavaFX 访问 whatsapp,这似乎不是用户代理问题,而是使用 FX 时缺少某些依赖项,或者只是 whatsapp 使用其他一些指标阻止,但找到了替代方案;潘多姆
它与 JavaFX 不兼容,但与 Swing 兼容,并且可以访问任何站点而无需考虑用户代理或任何依赖性问题,因为它是JCEF实现,即 Chromium Framework for Java,本质上是嵌入式 Chrome for Java .
只需在您的依赖项中使用 Pandomium jar 执行以下操作即可;
public static void main(String[] args) {
PandomiumSettings settings = PandomiumSettings.getDefaultSettingsBuilder().build();
settings.getCefSettings().cache_path = "C:\\temp\\cache";
// setting this option is paramount otherwise no cache is kept, and sesions are lost
Pandomium pandomium = new Pandomium(settings);
pandomium.initialize();
PandomiumClient client = pandomium.createClient();
PandomiumBrowser browser = client.loadURL("https://web.whatsapp.com");
JFrame frame = new JFrame();
frame.getContentPane().add(browser.toAWTComponent(), BorderLayout.CENTER);
frame.setTitle("Whatsapp");
frame.setSize(1720, 840);
frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
以下简单的 WebViewTest 类可以帮助您确定问题(或至少更接近确定问题):
package test;
import com.sun.javafx.webkit.WebConsoleListener;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class WebViewTest extends Application {
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(final Stage stage) {
// create WebView
WebView webView = new WebView();
webView.setFontScale(1.20);
webView.setZoom(1.20);
// print debug info
WebConsoleListener.setDefaultListener(
(webView1, message, lineNumber, sourceId) ->
System.out.println("Console: [" + sourceId + ":" + lineNumber + "] " + message));
// create WebEngine
final WebEngine webEngine = webView.getEngine();
webEngine.setJavaScriptEnabled(true);
webEngine.setUserAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36");
webEngine.load("https://web.whatsapp.com/");
VBox root = new VBox();
root.getChildren().add(webView);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
}
Run Code Online (Sandbox Code Playgroud)
在我的机器上运行上述代码时控制台输出如下:
Console: [https://web.whatsapp.com/vendor2.3973e7c149ced441846f.js:11] Unhandled rejection: https://web.whatsapp.com/vendor2.3973e7c149ced441846f.js:12:20732
Y@https://web.whatsapp.com/vendor2.3973e7c149ced441846f.js:11:7487
G@https://web.whatsapp.com/vendor2.3973e7c149ced441846f.js:11:7307
getDatabaseNames@https://web.whatsapp.com/vendor2.3973e7c149ced441846f.js:12:20699
deleteLegacyDBs@https://web.whatsapp.com/app.cf6d46b7e29e2f232d65.js:16:16530
i@https://web.whatsapp.com/app.cf6d46b7e29e2f232d65.js:16:14199
"cceejgejjg"@https://web.whatsapp.com/app.cf6d46b7e29e2f232d65.js:16:16681
a@https://web.whatsapp.com/progress.05fda25452b93c319bddcb3c2f6fdcb3.js:2:111
"hcddbeaic"@https://web.whatsapp.com/app.cf6d46b7e29e2f232d65.js:15:10748
a@https://web.whatsapp.com/progress.05fda25452b93c319bddcb3c2f6fdcb3.js:2:111
"baggieehcg"@https://web.whatsapp.com/app.cf6d46b7e29e2f232d65.js:22:22662
a@https://web.whatsapp.com/progress.05fda25452b93c319bddcb3c2f6fdcb3.js:2:111
"jfefjijii"@https://web.whatsapp.com/app.cf6d46b7e29e2f232d65.js:9:25328
a@https://web.whatsapp.com/progress.05fda25452b93c319bddcb3c2f6fdcb3.js:2:111
i@https://web.whatsapp.com/app.cf6d46b7e29e2f232d65.js:10:30397
d@https://web.whatsapp.com/app.cf6d46b7e29e2f232d65.js:6:11780
r@https://web.whatsapp.com/progress.05fda25452b93c319bddcb3c2f6fdcb3.js:2:5338
onload@https://web.whatsapp.com/progress.05fda25452b93c319bddcb3c2f6fdcb3.js:2:4883
Console: [https://web.whatsapp.com/app.cf6d46b7e29e2f232d65.js:3] XMLHttpRequest cannot load https://web.whatsapp.com/img/c5088e888c97ad440a61d247596f88e5.png due to access control checks.
Run Code Online (Sandbox Code Playgroud)
这部分内容Unhandled rejection: https://web.whatsapp.com/vendor2.3973e7c149ced441846f.js:12:20732指向您尝试加载的页面上的一个(相当不可读的)JavaScript 文件。
我的 JavaScript 不是很强大,但从快速浏览中我可以看出,该页面似乎需要 IndexedDB 支持,而 JavaFX WebView 中不提供该支持(据我所知)。
| 归档时间: |
|
| 查看次数: |
718 次 |
| 最近记录: |