private Document _fetchApp(String name) {

	String xmlString = null;

	try {
	    URL url = new URL(HTTP_CAMERA_SERVER + HTTP_PATH_GET + "?" + HTTP_SEARCH_ATTR_NAME + "=" + name);

	    xmlString = _readText(url.openStream()).trim();

	    Document document = _documentBuilder.parse(new InputSource(new StringReader((xmlString))));
	    
	    logPanel.add("Application = <strong>" + name + "</strong> fetched from server.", LogPanel.OK, true);

	    return document;
	}
	catch(SocketException e) {
	    if(DEBUG) e.printStackTrace();
	    String message = "A SocketException can be caused if an invalid CGI argument is used after \"" +
		HTTP_PATH_GET + "?\" in the URL.\n" +
		"Make sure \"" + HTTP_CAMERA_SERVER + HTTP_PATH_GET + "?" + HTTP_SEARCH_ATTR_NAME + "=<file>\" is supported by the server.\n" +
		"And check whether \"" +  HTTP_CAMERA_SERVER + HTTP_PATH_GET + "\" is supported by the server.";
	    
	    JOptionPane.showMessageDialog(this, message, "SocketException", JOptionPane.WARNING_MESSAGE);
	}
	catch(SAXParseException e) {
	    if(DEBUG) e.printStackTrace();
	    System.out.println("XML start\n" + xmlString + "\nXML end");
	    JOptionPane.showMessageDialog(this, e + "\nTry again.", e.getClass().getName(), JOptionPane.WARNING_MESSAGE);
	}
	catch(Exception e) {
	    if(DEBUG) e.printStackTrace();
	    JOptionPane.showMessageDialog(this, e + "\nTry again.", e.getClass().getName(), JOptionPane.WARNING_MESSAGE);
	}
	return null;
	
    }