In meiner kleinen Serie verlasse ich nun die PHP Welt und wechsel zu Java, der Programmiersprache, die von meiner Lieblings IDE Eclipse am besten unterstützt wird. Mit PHP erreicht man zwar schnell Ergebnisse, durch Java wird man aber zur sauberen OO – Programmierung angehalten. So fühle ich mich in der Java Welt eher zu Hause, denn Ordnung muss sein (zumindest auf dem Computer).
Was hat dass alles mit HTTP Clients zu tun? Eigentlich nichts, außer dass HttpUnit vollständig in Java implementiert ist. Was HttpUnit so komfortabel macht, ist die Verbindung eines HTTP Request – Response Handlers und eines HTML Parsers in einer API, die wie aus einem Guss wirkt. Forms kann man submiten und Links kann man clicken, man fühlt sich fast wie im Browser. Sogar Javascript wird unterstützt, wovon man bei Applikationen die von AJAX ausgiebig Gebrauch machen nicht zu viel erwarten sollte.
So nun zum Code:
public class GoogleClient { public static void main(String[] args) { GoogleClient gc=new GoogleClient(); gc.request(); } public void request() { WebConversation wc = new WebConversation(); WebRequest req = new GetMethodWebRequest( "http://www.google.de" ); try { WebResponse resp = wc.getResponse( req ); WebForm form=resp.getForms()[0]; form.setParameter("q", "http client examples"); resp=form.submit(form.getSubmitButton("btnG")); WebLink[] links=resp.getLinks(); for (int i = 0; i < links.length; i++) { WebLink link=links[i]; if (link.getAttribute("class").equals("l")) { System.out.println("<a href="">" +link.getText()+"</a>"); } } } catch (IOException e) { System.out.println(e.getMessage()); } catch (SAXException e) { System.out.println(e.getMessage()); } } }
Einzig der Zugriff auf die HTML Elemente über die Syntax von CSS Selektoren fehlt.
Fazit:
HttpUnit ist für mich, verglichen mit den vorgestellten PHP Pendanten, der komfortabelste HTTP Client. Die Unterstützung von JavaScript ist ein weiteres Plus. Die letzte Version (1.7) ist allerdings aus dem Mai 2008. Eine Weiterentwicklung gerade in Richtung funktionaler Tests von AJAX Anwendungen würde ich mir wünschen.
Ausblick:
So sauber man mit Java programmieren kann, so erzeugt man damit oft eine Menge Boilerplate Code. Diesen Missstand behebt Groovy, meiner Lieblings Skriptsprache für die Java VM. Doch dazu mehr in Teil 4.