我試圖從付款門戶中確定成功的付款事件。 您可能知道這個過程:您將「回叫網址」作爲其他參數之一發送到付款網站。付款後,網站將瀏覽器重定向到您的「回撥URL」。Android WebView - 攔截URL加載
由於這是Android應用程序,因此我使用自定義方案('myapp:// order/123')指定了一個'回調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://'網址。我已經檢查日誌,發現以下消息
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://爲了/ 123」到「https://order/123」,但該方法shouldOverrideUrlLoading()也不會調用此網址,而不是我在web視圖看到一個標準的錯誤信息:
The webpage at https://order/123 could not be loaded because: net::ERR_NAME_NOT_RESOLVED
我沒有發現任何與此類似互聯網,請幫助
遺憾的是它並沒有,不過我已經成功地使其通過覆蓋另一種方法工作: @覆蓋 公共WebResourceResponse shouldInterceptRequest(的WebView視圖,字符串URL) 該方法總是觸發或者這是一個「MYAPP: // order /'或'https:// order /'scheme。然後,我簡單地從這個方法返回200 OK響應並開始做我需要的任何事情 – ievgen