com.oreilly.servlet
Class HttpMessage

java.lang.Object
  extended by com.oreilly.servlet.HttpMessage
Direct Known Subclasses:
HttpsMessage

public class HttpMessage
extends java.lang.Object

A class to simplify HTTP applet-server communication. It abstracts the communication into messages, which can be either GET or POST.

It can be used like this:

 URL url = new URL(getCodeBase(), "/servlet/ServletName");
  
 HttpMessage msg = new HttpMessage(url);
  
 // Parameters may optionally be set using java.util.Properties
 Properties props = new Properties();
 props.put("name", "value");
  
 // Headers, cookies, and authorization may be set as well
 msg.setHeader("Accept", "image/png");             // optional
 msg.setCookie("JSESSIONID", "9585155923883872");  // optional
 msg.setAuthorization("guest", "try2gueSS");       // optional
  
 InputStream in = msg.sendGetMessage(props);
 

This class is loosely modeled after the ServletMessage class written by Rod McChesney of JavaSoft.

Version:
1.3, 2000/10/24, fixed headers NPE bug, 1.2, 2000/10/15, changed uploaded object MIME type to application/x-java-serialized-object, 1.1, 2000/06/11, added ability to set headers, cookies, and authorization, 1.0, 1998/09/18
Author:
Jason Hunter, Copyright © 1998

Constructor Summary
HttpMessage(java.net.URL servlet)
          Constructs a new HttpMessage that can be used to communicate with the servlet at the specified URL.
 
Method Summary
 java.io.InputStream sendGetMessage()
          Performs a GET request to the servlet, with no query string.
 java.io.InputStream sendGetMessage(java.util.Properties args)
          Performs a GET request to the servlet, building a query string from the supplied properties list.
 java.io.InputStream sendPostMessage()
          Performs a POST request to the servlet, with no query string.
 java.io.InputStream sendPostMessage(java.util.Properties args)
          Performs a POST request to the servlet, building post data from the supplied properties list.
 java.io.InputStream sendPostMessage(java.io.Serializable obj)
          Performs a POST request to the servlet, uploading a serialized object.
 void setAuthorization(java.lang.String name, java.lang.String password)
          Sets the authorization information for the request (using BASIC authentication via the HTTP Authorization header).
 void setCookie(java.lang.String name, java.lang.String value)
          Sets a request cookie with the given name and value.
 void setHeader(java.lang.String name, java.lang.String value)
          Sets a request header with the given name and value.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

HttpMessage

public HttpMessage(java.net.URL servlet)
Constructs a new HttpMessage that can be used to communicate with the servlet at the specified URL.

Parameters:
servlet - the server resource (typically a servlet) with which to communicate
Method Detail

sendGetMessage

public java.io.InputStream sendGetMessage()
                                   throws java.io.IOException
Performs a GET request to the servlet, with no query string.

Returns:
an InputStream to read the response
Throws:
java.io.IOException - if an I/O error occurs

sendGetMessage

public java.io.InputStream sendGetMessage(java.util.Properties args)
                                   throws java.io.IOException
Performs a GET request to the servlet, building a query string from the supplied properties list.

Parameters:
args - the properties list from which to build a query string
Returns:
an InputStream to read the response
Throws:
java.io.IOException - if an I/O error occurs

sendPostMessage

public java.io.InputStream sendPostMessage()
                                    throws java.io.IOException
Performs a POST request to the servlet, with no query string.

Returns:
an InputStream to read the response
Throws:
java.io.IOException - if an I/O error occurs

sendPostMessage

public java.io.InputStream sendPostMessage(java.util.Properties args)
                                    throws java.io.IOException
Performs a POST request to the servlet, building post data from the supplied properties list.

Parameters:
args - the properties list from which to build the post data
Returns:
an InputStream to read the response
Throws:
java.io.IOException - if an I/O error occurs

sendPostMessage

public java.io.InputStream sendPostMessage(java.io.Serializable obj)
                                    throws java.io.IOException
Performs a POST request to the servlet, uploading a serialized object.

The servlet can receive the object in its doPost() method like this:

     ObjectInputStream objin =
       new ObjectInputStream(req.getInputStream());
     Object obj = objin.readObject();
 
The type of the uploaded object can be determined through introspection.

Parameters:
obj - the serializable object to upload
Returns:
an InputStream to read the response
Throws:
java.io.IOException - if an I/O error occurs

setHeader

public void setHeader(java.lang.String name,
                      java.lang.String value)
Sets a request header with the given name and value. The header persists across multiple requests. The caller is responsible for ensuring there are no illegal characters in the name and value.

Parameters:
name - the header name
value - the header value

setCookie

public void setCookie(java.lang.String name,
                      java.lang.String value)
Sets a request cookie with the given name and value. The cookie persists across multiple requests. The caller is responsible for ensuring there are no illegal characters in the name and value.

Parameters:
name - the header name
value - the header value

setAuthorization

public void setAuthorization(java.lang.String name,
                             java.lang.String password)
Sets the authorization information for the request (using BASIC authentication via the HTTP Authorization header). The authorization persists across multiple requests.

Parameters:
name - the user name
name - the user password