簡體   English   中英

Android WebView-攔截URL加載

[英]Android WebView - Intercept URL loading

我正在嘗試從付款門戶確定成功的付款事件。 您可能知道此過程:您將“回調URL”作為其他參數之一發送到付款網站。 付款后,網站會將瀏覽器重定向到您的“回調URL”。

由於這是Android應用程序,因此我將使用自定義方案('myapp:// order / 123')指定一個自定義網址作為“回調URL”,然后使用以下技術截取重定向至“回調URL”的網址做一些自定義動作。

mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            LOG.info("Inside shouldOverrideUrlLoading(), url: {}", url);

            if (url.startsWith("myapp://")) {
                onPaymentPerformed();
                return true;
            } else {
                return false;
            }
        }
}

它工作了幾個月,但最近卻開始失敗。 我不知道為什么,但可能是由於設備更新。 此方法已停止調用“ myapp://” URL。 我檢查了日志,發現以下消息

I/chromium: [INFO:CONSOLE(2174)] "Mixed Content: The page at 'https://www.liqpay.com/en/checkout/success/xxxx' was loaded over a secure connection, but contains a form which targets an insecure endpoint 'myapp://order/7'. This endpoint should be made available over a secure connection.", source: https://static.liqpay.com/checkout/160922113118/js/index.js (2174)

然后我嘗試將'myapp:// order / 123'更改為' https:// order / 123 ',但此網址也未調用方法shouldOverrideUrlLoading(),而是在Webview中看到了標准錯誤消息:

The webpage at https://order/123 could not be loaded because: net::ERR_NAME_NOT_RESOLVED

我在互聯網上找不到與此類似的東西,請幫忙

您可以子類化WebClient並重寫onReceiveSslError方法。

 private class SSLTolerentWebViewClient extends WebViewClient {
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        handler.proceed(); // proceed ignoring ssl error. 
    }
}

看看是否可行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM