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: [email protected]
For additional commands, e-mail: [email protected]