HTTPClient
Class ContentMD5Module

java.lang.Object
  extended byHTTPClient.ContentMD5Module
All Implemented Interfaces:
HTTPClientModule, HTTPClientModuleConstants

class ContentMD5Module
extends Object
implements HTTPClientModule

This module handles the Content-MD5 response header. If this header was sent with a response and the entity isn't encoded using an unknown transport encoding then an MD5InputStream is wrapped around the response input stream. The MD5InputStream keeps a running digest and checks this against the expected digest from the Content-MD5 header the stream is closed. An IOException is thrown at that point if the digests don't match.


Field Summary
 
Fields inherited from interface HTTPClient.HTTPClientModuleConstants
REQ_CONTINUE, REQ_NEWCON_RST, REQ_NEWCON_SND, REQ_RESPONSE, REQ_RESTART, REQ_RETURN, REQ_SHORTCIRC, RSP_CONTINUE, RSP_NEWCON_REQ, RSP_NEWCON_SND, RSP_REQUEST, RSP_RESTART, RSP_SEND, RSP_SHORTCIRC
 
Constructor Summary
(package private) ContentMD5Module()
           
 
Method Summary
 int requestHandler(Request req, Response[] resp)
          Invoked by the HTTPClient.
 void responsePhase1Handler(Response resp, RoRequest req)
          Invoked by the HTTPClient.
 int responsePhase2Handler(Response resp, Request req)
          Invoked by the HTTPClient.
 void responsePhase3Handler(Response resp, RoRequest req)
          Invoked by the HTTPClient.
 void trailerHandler(Response resp, RoRequest req)
          Invoked by the HTTPClient.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ContentMD5Module

ContentMD5Module()
Method Detail

requestHandler

public int requestHandler(Request req,
                          Response[] resp)
Invoked by the HTTPClient.

Specified by:
requestHandler in interface HTTPClientModule
Parameters:
req - the request - may be modified as needed
resp - the response if the status is REQ_RESPONSE or REQ_RETURN
Returns:
status code REQ_XXX specifying further action

responsePhase1Handler

public void responsePhase1Handler(Response resp,
                                  RoRequest req)
Invoked by the HTTPClient.

Specified by:
responsePhase1Handler in interface HTTPClientModule
Parameters:
resp - the response - may be modified
req - the original request

responsePhase2Handler

public int responsePhase2Handler(Response resp,
                                 Request req)
Invoked by the HTTPClient.

Specified by:
responsePhase2Handler in interface HTTPClientModule
Parameters:
resp - the response - may be modified
req - the request; if the status is RSP_REQUEST then this must contain the new request; however do not modify this if you don't return a RSP_REQUEST status.
Returns:
status code RSP_XXX specifying further action

responsePhase3Handler

public void responsePhase3Handler(Response resp,
                                  RoRequest req)
                           throws IOException,
                                  ModuleException
Invoked by the HTTPClient.

Specified by:
responsePhase3Handler in interface HTTPClientModule
Parameters:
resp - the response - may be modified
req - the original request
Throws:
ModuleException - if an exception occurs during the handling of the response
IOException - if an IOException occurs on the socket

trailerHandler

public void trailerHandler(Response resp,
                           RoRequest req)
Invoked by the HTTPClient.

Specified by:
trailerHandler in interface HTTPClientModule
Parameters:
resp - the response
req - the request