コードを実行すると、Web ページに相対リンクが含まれている場合でも、絶対 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 が相対 URL であるブランチのコードを簡単にテストできませんでした。"/"
そのため、どこかにドロップしているか、 file:///
URL を適切に処理していない可能性があります。
ただし、これは問題を回避するための出発点です。