Tengo esta función:Tagsoup no puede analizar el documento HTML de una StringReader (Java)
private Node getDOM(String str) throws SearchEngineException {
DOMResult result = new DOMResult();
try {
XMLReader reader = new Parser();
reader.setFeature(Parser.namespacesFeature, false);
reader.setFeature(Parser.namespacePrefixesFeature, false);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(new SAXSource(reader,new InputSource(new StringReader(str))), result);
} catch (Exception ex) {
throw new SearchEngineException("NukatSearchEngine.getDom: " + ex.getMessage());
}
return result.getNode();
}
toma una cadena que contiene el documento HTML enviados por el servidor HTTP después de una solicitud POST, pero no puede analizar es correcto: solo obtengo como cuatro nodos de todo el documento. La cadena en sí misma se ve bien, si la imprimo y la copio en un documento de texto, veo la página que esperaba.
Cuando uso una versión sobrecargada del método anterior:
private Node getDOM(URL url) throws SearchEngineException {
DOMResult result = new DOMResult();
try {
XMLReader reader = new Parser();
reader.setFeature(Parser.namespacesFeature, false);
reader.setFeature(Parser.namespacePrefixesFeature, false);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(new SAXSource(reader, new InputSource(url.openStream())), result);
} catch (Exception ex) {
throw new SearchEngineException("NukatSearchEngine.getDom: " + ex.getMessage());
}
return result.getNode();
}
entonces todo funciona bien - consigo un árbol DOM adecuada, pero necesito recuperar de alguna manera la respuesta post de servidor.
Almacenar la cadena en un archivo y leerla de nuevo no funciona, obteniendo los mismos resultados.
¿Cuál podría ser el problema?