Mike,
In this world people routinely ignore RFCs. I think HttpClient has to
have a high degree of tolerance to those non-compliant date formats.
Besides, since we allow non-compliant variations in cookies, we should
treat other headers consistently.

Oleg 

On Sat, 2003-04-12 at 23:28, Michael Becke wrote:
> I'm going to go ahead and add this.  One question.  There seems to be a 
> number of other date formats used by the cookie parser.  They mostly 
> look like slight variations on the RFC 1123 and 1035 ones.  Should we 
> also be using these for header date values?
> 
> Mike
> 
> On Friday, April 11, 2003, at 11:11 AM, Kalnichevski, Oleg wrote:
> 
> > Chris,
> >
> > I (personally) see this code as a valuable addition to 
> > org.apache.commons.httpclient.contrib or 
> > org.apache.commons.httpclient.utils packages. Do you mind investing a 
> > bit more of your time to massage this code into DateParser class or 
> > something of a sort? It would also be quite nice to factor out cookie 
> > 'expire' attribute parsing logic and merge it into this class.
> >
> > Cheers
> >
> > Oleg
> > -----Original Message-----
> > From: Chris Brown [mailto:[EMAIL PROTECTED]
> > Sent: Friday, April 11, 2003 16:51
> > To: Commons HttpClient Project
> > Subject: Re: Parsing "Last-Modified" HTTP response header
> >
> >
> >
> > Well, I'm an impatient chap... didn't find the code, so I coded it 
> > myself.
> >
> > Here as a reference for anyone else (maybe worth including in the API, 
> > once
> > it's been verified).  Careful with line breaks...
> > ____________________________________________________________
> >
> >  /**
> >   * Date format pattern used to parse HTTP date headers in RFC 1123 
> > format.
> >   * <p>Dates may be formatted using the following patterns (listed in 
> > order
> >   * of preference):</p>
> >   * <ol>
> >   * <li><code>RFC 1123 format</code> (recommended)</li>
> >   * <li>[EMAIL PROTECTED] #PATTERN_RFC1036 RFC 1036 format) (deprecated)</li>
> >   * <li>[EMAIL PROTECTED] #PATTERN_ASCTIME ANSI C asctime() format} 
> > (deprecated)</li>
> >   * </ol>
> >   */
> >  public static final String PATTERN_RFC1123 =
> >  "EEE, dd MMM yyyy HH:mm:ss zzz";
> >
> >  /**
> >   * Date format pattern used to parse HTTP date headers in RFC 1036 
> > format.
> >   * <p>Dates may be formatted using the following patterns (listed in 
> > order
> >   * of preference):</p>
> >   * <ol>
> >   * <li>[EMAIL PROTECTED] #PATTERN_RFC1123 RFC 1123 format} (recommended)</li>
> >   * <li><code>RFC 1036 format</code> (deprecated)</li>
> >   * <li>[EMAIL PROTECTED] #PATTERN_ASCTIME ANSI C asctime() format} 
> > (deprecated)</li>
> >   * </ol>
> >   */
> >  public static final String PATTERN_RFC1036 =
> >  "EEEE, dd-MMM-yy HH:mm:ss zzz";
> >
> >  /**
> >   * Date format pattern used to parse HTTP date headers in ANSI C
> > <code>asctime()</code> format.
> >   * <p>Dates may be formatted using the following patterns (listed in 
> > order
> >   * of preference):</p>
> >   * <ol>
> >   * <li>[EMAIL PROTECTED] #PATTERN_RFC1123 RFC 1123 format} (recommended)</li>
> >   * <li>[EMAIL PROTECTED] #PATTERN_RFC1036 RFC 1036 format) (deprecated)</li>
> >   * <li><code>ANSI C asctime() format</code> (deprecated)</li>
> >   * </ol>
> >   */
> >  public static final String PATTERN_ASCTIME =
> >  "EEE MMM d HH:mm:ss yyyy";
> >
> >  /**
> >   * Parses a HTTP header date value.
> >   *
> >   * @param dateHeaderValue the date header value to parse.
> >   * @return the parsed date.
> >   *
> >   * @throws ParseException if the date could not be parsed according 
> > to the
> >   *  one of the following formats (in order of preference):
> >   *  [EMAIL PROTECTED] #PATTERN_RFC1123 RFC 1123},
> >   *  [EMAIL PROTECTED] #PATTERN_RFC1036 RFC 1036},
> >   *  [EMAIL PROTECTED] #PATTERN_ASCTIME ANSI C asctime() format}.
> >   *
> >   *  @author Christopher Brown
> >   */
> >  public static Date parseDateHeader(String dateHeaderValue) throws
> > ParseException
> >  {
> >   Date date = null;
> >   if (dateHeaderValue != null)
> >   {
> >    SimpleDateFormat dateParser = new SimpleDateFormat(PATTERN_RFC1123,
> > Locale.US);
> >    dateParser.setTimeZone(TimeZone.getTimeZone("GMT"));
> >    try
> >    {
> >     date = dateParser.parse(dateHeaderValue);
> >    }
> >    catch (ParseException exRFC1123)
> >    {
> >     dateParser.applyPattern(PATTERN_RFC1036);
> >     try
> >     {
> >      date = dateParser.parse(dateHeaderValue);
> >     }
> >     catch (ParseException exRFC1036)
> >     {
> >      dateParser.applyPattern(PATTERN_ASCTIME);
> >      date = dateParser.parse(dateHeaderValue);
> >     }
> >    }
> >   }
> >   return date;
> >  }
> >
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: 
> > [EMAIL PROTECTED]
> > For additional commands, e-mail: 
> > [EMAIL PROTECTED]
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: 
> > [EMAIL PROTECTED]
> > For additional commands, e-mail: 
> > [EMAIL PROTECTED]
> >
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to