WebView android上的服务器挂断

时间:2019-01-17 05:33:50

标签: android webview

在将url加载到webView时,我收到消息“服务器挂起”,并且在Android端或服务器端均未实现此消息。如果有人知道如何解决此问题,请提供帮助。谢谢

我使用了以下代码:

 private WebView mWebview;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mWebview  = new WebView(this);
        mWebview.getSettings().setJavaScriptEnabled(true); 
        webView.setWebChromeClient(new MyWebChromeClient(this));
        mWebview .loadUrl("our server url");
        setContentView(mWebview);
    }

    private class MyWebChromeClient extends WebChromeClient {
    Context context;

    public MyWebChromeClient(Context context) {
        super();
        this.context = context;
        }
    }

Please check screenshot

3 个答案:

答案 0 :(得分:1)

Webview向您显示由已加载的URL返回的HTML。 如果您收到包含错误消息的响应,则不会调用onReceivedError()

使用onPageFinished()中的以下代码检查从服务器收到的HTML内容。

webView.evaluateJavascript(
    "(function() { return ('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>'); })();",
    new ValueCallback<String>() {
        @Override
        public void onReceiveValue(String html) {
                // displays the HTML received after the URL is loaded.
            Log.e("#Eval", "Html -> " + html);
        }
    });

您已经提到该消息未在您的应用程序中实现,因此必须已从服务器端收到该消息。

答案 1 :(得分:0)

Google.com是安全域。您必须使用https://www.google.com而不是http://www.google.com

答案 2 :(得分:0)

请使用此方法并设置您的网站网址:    范例:startWebView(“ https://stackoverflow.com”);

private void startWebView(String url) {

        WebSettings settings = webview.getSettings();

        settings.setJavaScriptEnabled(true);
        webview.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);

        webview.getSettings().setBuiltInZoomControls(true);
        webview.getSettings().setUseWideViewPort(true);
        webview.getSettings().setLoadWithOverviewMode(true);

        webview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }

            @Override
            public void onPageFinished(WebView view, String url) {

            }

            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Toast.makeText(getApplicationContext(), "Error:" + description, Toast.LENGTH_SHORT).show();

            }
        });
        webview.loadUrl(url);

    }