{"record":{"id":"9401bd73465b0b05","repo":"spring-projects/spring-ai","slug":"failed-to-read-html-resource-htmlresource","errorCode":null,"errorMessage":"Failed to read HTML resource: <htmlResource>","messagePattern":"Failed to read HTML resource: <htmlResource>","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"document-readers/spring-ai-jsoup-document-reader/src/main/java/org/springframework/ai/reader/jsoup/JsoupDocumentReader.java","lineNumber":107,"sourceCode":"\t\t\t\t\taddMetadata(doc, document);\n\t\t\t\t\t// Do not add metadata from element to avoid duplication.\n\t\t\t\t\tdocuments.add(document);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Extract text from specific elements based on the selector\n\t\t\t\tElements elements = doc.select(this.config.selector);\n\t\t\t\tString text = elements.stream().map(Element::text).collect(Collectors.joining(this.config.separator));\n\t\t\t\tDocument document = new Document(text);\n\t\t\t\taddMetadata(doc, document);\n\t\t\t\tdocuments.add(document);\n\t\t\t}\n\n\t\t\treturn documents;\n\n\t\t}\n\t\tcatch (IOException e) {\n\t\t\tthrow new RuntimeException(\"Failed to read HTML resource: \" + this.htmlResource, e);\n\t\t}\n\t}\n\n\tprivate void addMetadata(org.jsoup.nodes.Document jsoupDoc, Document springDoc) {\n\t\tMap<String, Object> metadata = new HashMap<>();\n\t\tmetadata.put(\"title\", jsoupDoc.title());\n\n\t\tfor (String metaTag : this.config.metadataTags) {\n\t\t\tString value = jsoupDoc.select(\"meta[name=\" + metaTag + \"]\").attr(\"content\");\n\t\t\tif (!value.isEmpty()) {\n\t\t\t\tmetadata.put(metaTag, value);\n\t\t\t}\n\t\t}\n\n\t\tif (this.config.includeLinkUrls) {\n\t\t\tElements links = jsoupDoc.select(\"a[href]\");\n\t\t\tList<String> linkUrls = links.stream().map(link -> link.attr(\"abs:href\")).toList();\n\t\t\tmetadata.put(\"linkUrls\", linkUrls);","sourceCodeStart":89,"sourceCodeEnd":125,"githubUrl":"https://github.com/spring-projects/spring-ai/blob/98a7beda4f29d80a71c5837eb4053b03a93a46f7/document-readers/spring-ai-jsoup-document-reader/src/main/java/org/springframework/ai/reader/jsoup/JsoupDocumentReader.java#L89-L125","documentation":"Wraps an IOException raised while fetching or reading the HTML resource in JsoupDocumentReader.get: the URL/connection could not be opened or read, so document extraction is aborted with a RuntimeException carrying the resource name.","triggerScenarios":"Thrown at document-readers/spring-ai-jsoup-document-reader/src/main/java/org/springframework/ai/reader/jsoup/JsoupDocumentReader.java:107 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the HTML resource URL is correct and reachable","Check network/proxy/firewall settings","Pre-download the resource locally and pass a file/classpath resource"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"98a7beda4f29d80a71c5837eb4053b03a93a46f7","analyzedAt":"2026-09-11T14:15:49.441Z","contentChangedAt":"2026-09-11T14:15:49.441Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}