0

У меня есть приложение для Android, которое использовало веб-просмотр для отображения веб-приложения Google App Engine. Как перезаписать по умолчанию HTTP Error 504 Gateway timeout в моем приложении?Android Webview - ошибка HTTP 504 Тайм-аут шлюза

HTTP Error 504 Gateway timeout 

The server, while acting as a gateway or proxy, did not receive a 
timely response from the upstream server it accessed in attempting 
to complete the request. 

Я уже переопределить onReceivedError какую работу, когда нет подключения к интернету и другие ошибки.

webView.setWebViewClient(new WebViewClient(){ 
    ... 

    @SuppressLint("DefaultLocale") 
    @Override 
    public void onReceivedError(WebView view, int errorCode,String description, String failingUrl) { 

     try { 
      String template = streamToString(getAssets().open("html/error.html")); 
      String data = template.replaceAll("%DESCRIPTION%", description.toLowerCase()) 
        .replaceAll("%WEBSITE_URL%", WEBSITE_URL); 

      view.loadDataWithBaseURL("file:///android_asset/html/", data, "text/html", "utf-8", null); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

}); 

onReceivedError Не удается получить ошибки в HTTP только сетевую ошибку? Любое обходное решение? Как андроид webview перехватывает ошибки HTTP?

ответ

0

На самом деле ваш запрос становится таймаут из-за низкой связи или причин, связанных с сетевыми .. Вы можете показать пользовательскую страницу таким образом Inshallah

webview.setWebViewClient(new WebViewClient() { 
      /* (non-Javadoc) 
      * @see android.webkit.WebViewClient#onPageStarted(android.webkit.WebView, java.lang.String, android.graphics.Bitmap) 
      */ 
      @Override 
      public void onPageStarted(WebView view, String url, Bitmap favicon) { 
       System.out.println("page loading started"); 
       // TODO Auto-generated method stub 
       if(!isNetworkAvailable2()) 
       { 
        //showInfoMessageDialog("network not available"); 
        //load here your custom offline page for handling such errors 

        System.out.println("network not available"); 
        return; 
       } 
       else System.out.println("network available"); 

       super.onPageStarted(view, url, favicon); 

      } 

      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       isConnected=isNetworkAvailable2(); 
       if (isConnected) { 
        // return false to let the WebView handle the URL 
        return false; 
       } else { 
        // show the proper "not connected" message 
       // view.loadData(offlineMessageHtml, "text/html", "utf-8"); 
        // return true if the host application wants to leave the current 
        // WebView and handle the url itself 
        return true; 
       } 
      } 
      @Override 
      public void onReceivedError (WebView view, int errorCode, 
       String description, String failingUrl) { 
       if (errorCode == ERROR_TIMEOUT) { 
        view.stopLoading(); // may not be needed 
       // view.loadData(timeoutMessageHtml, "text/html", "utf-8"); 
       } 
      } 
     }); 
     //webview.setWebChromeClient(new WebChromeClient());   
    } 

Credits to the original answer here.

+0

'onReceivedError' не было когда произошла ошибка, но вместо этого отобразится страница ошибок по умолчанию. –

+0

все это время? \ – Nezam

+0

попробуйте изменить сейчас – Nezam

Смежные вопросы