2011-05-26 24 views
17

Esto question was asked once already, pero la API cambió, supongo, y las respuestas ya no son válidas.¿Cómo crear el objeto HTML HTML HtmlUnit desde String?

URL url = new URL("http://www.example.com"); 
StringWebResponse response = new StringWebResponse("<html><head><title>Test</title></head><body></body></html>", url); 
HtmlPage page = HTMLParser.parseHtml(response, new TopLevelWindow("top", new WebClient())); 
System.out.println(page.getTitleText()); 

no se puede hacer porque TopLevelWindow está protegido y cosas por el estilo que se extiende/implementación de la ventana, debido a que es ridículo :)

Alguien tiene una idea de cómo hacer eso? Me parece raro que no se pueda hacer fácilmente.

Respuesta

23

Este código funciona en GroovyConsole

@Grapes(
    @Grab(group='net.sourceforge.htmlunit', module='htmlunit', version='2.8') 
) 

import com.gargoylesoftware.htmlunit.* 
import com.gargoylesoftware.htmlunit.html.* 

URL url = new URL("http://www.example.com"); 
StringWebResponse response = new StringWebResponse("<html><head><title>Test</title></head><body></body></html>", url); 
WebClient client = new WebClient() 
HtmlPage page = HTMLParser.parseHtml(response, client.getCurrentWindow()); 
System.out.println(page.getTitleText()); 
+1

No sé lo que está viendo, pero el constructor está protegida. Las clases deben ser "públicas" en java, a menos que sea una clase interna o anidada ... – lisak

+0

Malo, estaba viendo la declaración de clase y la sutileza de Groovy/Java hizo que mi código funcionara en GroovyConsole. He editado en consecuencia con un simple giro. Eso debería funcionar para usted ahora – Grooveek

+0

Gracias Grooveek, ¿cómo es que funcionaba en la consola Groovy? – lisak