在webview中加载特定的URL中断

时间:2015-10-06 20:35:04

标签: java webview javafx

当我在javafx webview应用程序中加载某些网址时出现此错误

app.filter('formatTimer', function () {
return function (input) {
    function z(n) { return (n < 10 ? '0' : '') + n; }
    var seconds = input % 60;
    var minutes = Math.floor(input % 3600 / 60);
    var hours = Math.floor(input / 3600);
    return (z(hours) + ':' + z(minutes) + ':' + z(seconds));
};

该网站在Chrome,Firefox等网站上加载正常。看来这是webview的一个问题。什么是解决方法?

中断的网址为http://mp3skull.com

1 个答案:

答案 0 :(得分:1)

这不是WebView的错,它是目标站点上的某种设置(正如James_D在评论中所建议的那样)。目标站点正在检查传入请求的用户代理,如果它未检测到已识别的用户代理,则使用奇怪的Amiga emulated guru meditation error进行响应。

要解决此问题,您可以将WebView的用户代理设置为伪装成另一个浏览器(例如Chrome)。我从useragentstring.com复制了一个用户代理,当我使用Chrome用户代理字符串时,目标网页在没有任何专家调解的情况下正常打开。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class Pirate extends Application {

    public static final String CHROME_41_USER_AGENT =
            "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36";

    @Override
    public void start(final Stage stage) throws Exception {
        WebView webView = new WebView();
        webView.getEngine().setUserAgent(
                CHROME_41_USER_AGENT
        );
        webView.getEngine().load("http://mp3skull.com");

        stage.setScene(new Scene(webView));
        stage.show();
    }
    public static void main(String[] args) throws Exception {
        launch(args);
    }
}