当我运行你的代码时,它确实返回了绝对 URL,即使我的网页包含相对链接。也就是说,如果有时它不会让我感到惊讶,它不会。我还没有完全测试过这段代码,但我认为你可以尝试这样的事情。
基本上,您检查 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:///
正确处理 URL。
但是,这是解决您的问题的起点。