代码之家  ›  专栏  ›  技术社区  ›  Sushant Poman

服务器挂断在WebView Android上

  •  3
  • Sushant Poman  · 技术社区  · 7 年前

    我在将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 回复  |  直到 7 年前
        1
  •  1
  •   Pranav Karnik AmazingAshu    7 年前

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

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

    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);
            }
        });
    

    正如您提到的,消息没有在您的应用程序中实现,它一定是从服务器端收到的。

        2
  •  0
  •   Varun    7 年前

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

        3
  •  0
  •   Md Yeasin Ali    7 年前

    请使用此方法并设置网站URL: 示例: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);
    
        }