[英]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.