當我運行您的代碼時,它確實返回絕對URL,即使當我的網頁包含相對鏈接。也就是說,如果有時候,它不會讓我感到驚訝。我還沒有完全測試過這段代碼,但我認爲你可以嘗試這樣的事情。
基本上,你檢查,看看是否URL是絕對的,如果不是,您可以通過使用父BrowserField
文檔URL組裝絕對URL:
ProtocolController controller = new ProtocolController(_browserField) {
public InputConnection handleResourceRequest(BrowserFieldRequest request) throws Exception {
String absoluteUrl = null;
URI uri = URI.create(request.getURL());
if (uri.isAbsolute()) {
absoluteUrl = request.getURL();
} else {
String docUrl = _browserField.getDocumentUrl();
String url = request.getURL();
if (url.startsWith("/")) {
// the URL is relative to the server root
URI docUri = URI.create(docUrl);
absoluteUrl = docUri.getScheme() + "://" + docUri.getHost() + url;
} else {
// the URL is relative to the document URL
absoluteUrl = docUrl + url;
}
}
System.out.println(" requesting: " + absoluteUrl);
return super.handleResourceRequest(request);
}
}
再次,對我來說,我得到的絕對URL ,所以我無法輕易測試URL相對的分支中的代碼。因此,我可能會放棄"/"
某處,或者不正確處理file:///
網址。
但是,這是一個起點,解決您的問題。
我使用此代碼進行了測試,** did **從'request.getURL()'獲取絕對URL。如果我的建議沒有幫助,你能告訴我們你正在運行哪個設備和操作系統版本嗎?謝謝。 – Nate