Java Jsoup:absUrl中的空结果(abs:)

Java Jsoup:absUrl中的空结果(abs:),java,uri,jsoup,Java,Uri,Jsoup,我试图用jsoup制作一个图像链接下载程序。我制作了一个下载HTML代码部分,当我完成了一个解析部分时,我意识到,有时候图像的链接没有出现主部分。所以我找到了absUrl解决方案,但由于某些原因,它不起作用(它给了我null)。所以我尝试使用uri.resolve(),但结果没有改变。所以现在我不知道怎么解决它。我附加了部分代码,负责解析ant并将url写入字符串: public static String finalcode(String textin) throws Exception {

我试图用jsoup制作一个图像链接下载程序。我制作了一个下载HTML代码部分,当我完成了一个解析部分时,我意识到,有时候图像的链接没有出现主部分。所以我找到了absUrl解决方案,但由于某些原因,它不起作用(它给了我null)。所以我尝试使用
uri.resolve()
,但结果没有改变。所以现在我不知道怎么解决它。我附加了部分代码,负责解析ant并将url写入字符串:

public static String finalcode(String textin) throws Exception {
    String text = source(textin);
    Document doc = Jsoup.parse(text);
    Elements images = doc.getElementsByTag("img");
    String Simages = images.toString();
    int Limages = countLines(Simages);
    StringBuilder src = new StringBuilder();
    while (Limages > 0) {
        Limages--;
        Element image = images.get(Limages);
        String href = image.attr("src");
        src.append(href);
        src.append("\n");
    }
    String result = src.toString();
    return result;
}

看起来您是从字符串而不是URL解析HTML。因为jsoup无法知道这些HTML代码来自哪个URL,所以它无法创建绝对路径

要为文档设置此URL,您应该使用版本解析它,如

String url = "http://server/pages/document.htlm";
String text = "<img src = '../images/image_name1.jpg'/><img src = '../images/image_name2.jpg'/>'";
Document doc = Jsoup.parse(text, url);
Elements images = doc.getElementsByTag("img");
for (Element image : images){
    System.out.println(image.attr("src")+" -> "+image.attr("abs:src"));
}

另一种选择是让Jsoup通过提供URL而不是HTML字符串来直接解析页面

Document doc = Jsoup.connect("http://example.com").get();
这样,文档将知道它来自哪个URL,所以它将能够创建绝对路径

Document doc = Jsoup.connect("http://example.com").get();