Classes for testing http server systems. Each test session should begin by creating a {@link com.meterware.httpunit.WebConversation WebConversation} to which it should submit an initial {@link com.meterware.httpunit.GetMethodWebRequest http request} using the {@link com.meterware.httpunit.WebConversation#getResponse getResponse} method. With each subsequent step, it will typically examine the response either textually or as a DOM, and create new requests based on either submitting a form or clicking on a link.

## Installation

The package depends on a number of external jar files, provided in the `jar` directory:

nekohtml.jar
  The NekoHTML parser, used to convert raw HTML into an XML DOM. This is required for handling HTML.
js.jar
  The Rhino JavaScript interpreter, required for any JavaScript processing.
xmlParserAPIs.jar
  The interfaces for a W3-compliant XML parser. Required for interpreting either HTML or XML pages.
xercesImpl.jar
  The Xerces 2 implementation of an XML parser. NekoHTML requires this implementation.
servlet.jar
  The APIs and common classes for the Java Servlet 1.3 standard. Required for use with ServletUnit.
junit.jar
  JUnit, the unit test framework. Used to test HttpUnit and recommended for writing tests that use HttpUnit.
tidy.jar
  JTidy, an alternate HTML parser/validator. JTidy is a lot pickier about HTML structure than NekoHTML, and uses its own implementation of the DOM classes, rather than using those found in the xerces jar. Some JavaScript features, such as `document.write()` will only work with NekoHTML.

## Example

In the following code, a web conversation is started and an initial request sent. The program then prints out the response and extracts the first form (the login form) from it. After setting the `name` parameter to the desired value, it submits the form and prints the response.

    import com.meterware.httpunit.*;

    import java.io.IOException;
    import java.net.MalformedURLException;

    import org.xml.sax.*;

    public class Example {

        public static void main( String[] params ) {
            try {
                WebConversation     conversation = new WebConversation();

                WebResponse response = conversation.getResponse( "http://www.meterware.com/servlet/TopSecret" );
                System.out.println( response );

                WebForm loginForm = response.getForms()[0];

                loginForm.setParameter( "name", "master" );
                response = loginForm.submit();
                System.out.println( response );

            } catch (Exception e) {
                System.err.println( "Exception: " + e );
            }
        }
    }

Please direct any questions to Russell Gold.