Author: markt Date: Sun Aug 22 20:56:12 2010 New Revision: 987947 URL: http://svn.apache.org/viewvc?rev=987947&view=rev Log: Add support for parsing a session ID and the 100-continue expectation
Modified: tomcat/trunk/test/org/apache/catalina/startup/SimpleHttpClient.java Modified: tomcat/trunk/test/org/apache/catalina/startup/SimpleHttpClient.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/startup/SimpleHttpClient.java?rev=987947&r1=987946&r2=987947&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/catalina/startup/SimpleHttpClient.java (original) +++ tomcat/trunk/test/org/apache/catalina/startup/SimpleHttpClient.java Sun Aug 22 20:56:12 2010 @@ -42,18 +42,24 @@ public abstract class SimpleHttpClient { public static final String CRLF = "\r\n"; + public static final String INFO_100 = "HTTP/1.1 100"; public static final String OK_200 = "HTTP/1.1 200"; + public static final String REDIRECT_302 = "HTTP/1.1 302"; public static final String FAIL_404 = "HTTP/1.1 404"; public static final String FAIL_50X = "HTTP/1.1 50"; public static final String FAIL_500 = "HTTP/1.1 500"; public static final String FAIL_501 = "HTTP/1.1 501"; + private static final String SESSION_COOKIE_HEADER_PREFIX = + "Set-Cookie: JSESSIONID="; + private Socket socket; private Writer writer; private BufferedReader reader; private int port = 8080; private String[] request; + private boolean useContinue = false; private int requestPause = 1000; private String responseLine; @@ -68,6 +74,10 @@ public abstract class SimpleHttpClient { request = theRequest; } + public void setUseContinue(boolean theUseContinueFlag) { + useContinue = theUseContinueFlag; + } + public void setRequestPause(int theRequestPause) { requestPause = theRequestPause; } @@ -84,6 +94,17 @@ public abstract class SimpleHttpClient { return responseBody; } + public String getSessionId() { + for (String header : responseHeaders) { + if (header.startsWith(SESSION_COOKIE_HEADER_PREFIX)) { + header = header.substring(SESSION_COOKIE_HEADER_PREFIX.length()); + header = header.substring(0, header.indexOf(';')); + return header; + } + } + return null; + } + public void connect() throws UnknownHostException, IOException { socket = new Socket("localhost", port); OutputStream os = socket.getOutputStream(); @@ -111,6 +132,18 @@ public abstract class SimpleHttpClient { // Read the response responseLine = readLine(); + + // Is a 100 continue response expected? + if (useContinue) { + if (isResponse100()) { + // Skip the blank after the 100 Continue response + readLine(); + // Now get the final response + responseLine = readLine(); + } else { + throw new IOException("No 100 Continue response"); + } + } // Put the headers into the map String line = readLine(); @@ -155,10 +188,18 @@ public abstract class SimpleHttpClient { responseBody = null; } + public boolean isResponse100() { + return getResponseLine().startsWith(INFO_100); + } + public boolean isResponse200() { return getResponseLine().startsWith(OK_200); } - + + public boolean isResponse302() { + return getResponseLine().startsWith(REDIRECT_302); + } + public boolean isResponse404() { return getResponseLine().startsWith(FAIL_404); } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org