/* introducing... the WebRaveler package ! */ package webraveler.http; import java.io.*; import java.util.*; /** * HTTP message (request or response). * * @author The Web Raveler Development Squad * @version 1.0 */ public class HTTPMessage implements Serializable { /* variables */ protected Hashtable headers; /* constructors */ public HTTPMessage() { headers = new Hashtable(); } /* methods */ /** * Set a given key-value pair as a header line in the message. * * @param header a string containing the name of the header * @param value a string containing the header field */ public void addHeader(String header, String value) { /* if the header already has a key in the hash table, we want to * add the new value to the value string after a comma and a space. */ String oldValue = new String(); if ( headers.containsKey(header) ) { oldValue = (String) headers.get(header.toLowerCase()); headers.put(header.toLowerCase(), oldValue+", "+value); } else { headers.put(header.toLowerCase(),value); } } public void setHeader(String header, String value) { headers.put(header.toLowerCase(),value); } /** * Get the value for a given key String. * * @param header a string containing the name of the header * @return a string containing the header field */ public String getHeader(String header) { if (headers.containsKey(header.toLowerCase())) return (String) headers.get(header.toLowerCase()); else return null; }//String getHeader(String) /** * Delete the given header value * * @param header a string containing the name of the header */ public void deleteHeader(String header) { headers.remove(header.toLowerCase()); } /** * Check whether or not a given header is contained in the headers of the HTTPMessage. * * @param header a string containing the name of the header * @return a boolean indicating whether the header exists */ public boolean containsHeader(String header) { return headers.containsKey(header.toLowerCase()); } /** * Read a line of input from the given input stream. (YAY! We actually used some * of Daren's code! Hooray for us! Happy happy joy joy!) * * @param in an inputstream, ostensibly containing text lines */ public static String readLine(InputStream in) throws IOException { StringBuffer buf= new StringBuffer(); int c= in.read(); if( c== -1) return null; while( c != -1 ){ if( c=='\r' ){ in.read();//clear \n break; } if( c=='\n' ){ break; } buf.append((char)c); c= in.read(); } return buf.toString(); } }