View Javadoc

    1   /*
    2    * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/java/org/apache/commons/httpclient/HttpConstants.java,v 1.15 2004/04/18 23:51:35 jsdever Exp $
    3    * $Revision: 480424 $
    4    * $Date: 2006-11-29 06:56:49 +0100 (Wed, 29 Nov 2006) $
    5    *
    6    * ====================================================================
    7    *
    8    *  Licensed to the Apache Software Foundation (ASF) under one or more
    9    *  contributor license agreements.  See the NOTICE file distributed with
    10   *  this work for additional information regarding copyright ownership.
    11   *  The ASF licenses this file to You under the Apache License, Version 2.0
    12   *  (the "License"); you may not use this file except in compliance with
    13   *  the License.  You may obtain a copy of the License at
    14   *
    15   *      http://www.apache.org/licenses/LICENSE-2.0
    16   *
    17   *  Unless required by applicable law or agreed to in writing, software
    18   *  distributed under the License is distributed on an "AS IS" BASIS,
    19   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    20   *  See the License for the specific language governing permissions and
    21   *  limitations under the License.
    22   * ====================================================================
    23   *
    24   * This software consists of voluntary contributions made by many
    25   * individuals on behalf of the Apache Software Foundation.  For more
    26   * information on the Apache Software Foundation, please see
    27   * <http://www.apache.org/>.
    28   *
    29   */
    30
    31  package org.apache.commons.httpclient;
    32
    33  import java.io.UnsupportedEncodingException;
    34
    35  import org.apache.commons.logging.Log;
    36  import org.apache.commons.logging.LogFactory;
    37
    38
    39  /**
    40   * HTTP content conversion routines.
    41   *
    42   * @author Oleg Kalnichevski
    43   * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
    44   *
    45   * @deprecated use EncodingUtil class
    46   */
    47  public class HttpConstants {
    48
    49      /** Character set used to encode HTTP protocol elements */
    50      public static final String HTTP_ELEMENT_CHARSET = "US-ASCII";
    51
    52      /** Default content encoding chatset */
    53      public static final String DEFAULT_CONTENT_CHARSET = "ISO-8859-1";
    54
    55      /** Log object for this class. */
    56      private static final Log LOG = LogFactory.getLog(HttpConstants.class);
    57
    58      /**
    59       * Converts the specified string to a byte array of HTTP element characters.
    60       * This method is to be used when encoding content of HTTP elements (such as
    61       * request headers)
    62       *
    63       * @param data the string to be encoded
    64       * @return The resulting byte array.
    65       */
    66      public static byte[] getBytes(final String data) {
    67          if (data == null) {
    68              throw new IllegalArgumentException("Parameter may not be null");
    69          }
    70
    71          try {
    72              return data.getBytes(HTTP_ELEMENT_CHARSET);
    73          } catch (UnsupportedEncodingException e) {
    74
    75              if (LOG.isWarnEnabled()) {
    76                  LOG.warn("Unsupported encoding: "
    77                      + HTTP_ELEMENT_CHARSET
    78                      + ". System default encoding used");
    79              }
    80
    81              return data.getBytes();
    82          }
    83      }
    84
    85      /**
    86       * Converts the byte array of HTTP element characters to a string This
    87       * method is to be used when decoding content of HTTP elements (such as
    88       * response headers)
    89       *
    90       * @param data the byte array to be encoded
    91       * @param offset the index of the first byte to encode
    92       * @param length the number of bytes to encode
    93       * @return The resulting string.
    94       */
    95      public static String getString(final byte[] data, int offset, int length) {
    96
    97          if (data == null) {
    98              throw new IllegalArgumentException("Parameter may not be null");
    99          }
    100
    101         try {
    102             return new String(data, offset, length, HTTP_ELEMENT_CHARSET);
    103         } catch (UnsupportedEncodingException e) {
    104
    105             if (LOG.isWarnEnabled()) {
    106                 LOG.warn("Unsupported encoding: "
    107                     + HTTP_ELEMENT_CHARSET
    108                     + ". System default encoding used");
    109             }
    110
    111             return new String(data, offset, length);
    112         }
    113     }
    114
    115     /**
    116      * Converts the byte array of HTTP element characters to a string This
    117      * method is to be used when decoding content of HTTP elements (such as
    118      * response headers)
    119      *
    120      * @param data the byte array to be encoded
    121      * @return The resulting string.
    122      */
    123     public static String getString(final byte[] data) {
    124         return getString(data, 0, data.length);
    125     }
    126
    127     /**
    128      * Converts the specified string to a byte array of HTTP content charachetrs
    129      * This method is to be used when encoding content of HTTP request/response
    130      * If the specified charset is not supported, default HTTP content encoding
    131      * (ISO-8859-1) is applied
    132      *
    133      * @param data the string to be encoded
    134      * @param charset the desired character encoding
    135      * @return The resulting byte array.
    136      */
    137     public static byte[] getContentBytes(final String data, String charset) {
    138
    139         if (data == null) {
    140             throw new IllegalArgumentException("Parameter may not be null");
    141         }
    142
    143         if ((charset == null) || (charset.equals(""))) {
    144             charset = DEFAULT_CONTENT_CHARSET;
    145         }
    146
    147         try {
    148             return data.getBytes(charset);
    149         } catch (UnsupportedEncodingException e) {
    150
    151             if (LOG.isWarnEnabled()) {
    152                 LOG.warn("Unsupported encoding: "
    153                     + charset
    154                     + ". HTTP default encoding used");
    155             }
    156
    157             try {
    158                 return data.getBytes(DEFAULT_CONTENT_CHARSET);
    159             } catch (UnsupportedEncodingException e2) {
    160
    161                 if (LOG.isWarnEnabled()) {
    162                     LOG.warn("Unsupported encoding: "
    163                         + DEFAULT_CONTENT_CHARSET
    164                         + ". System encoding used");
    165                 }
    166
    167                 return data.getBytes();
    168             }
    169         }
    170     }
    171
    172     /**
    173      * Converts the byte array of HTTP content characters to a string This
    174      * method is to be used when decoding content of HTTP request/response If
    175      * the specified charset is not supported, default HTTP content encoding
    176      * (ISO-8859-1) is applied
    177      *
    178      * @param data the byte array to be encoded
    179      * @param offset the index of the first byte to encode
    180      * @param length the number of bytes to encode
    181      * @param charset the desired character encoding
    182      * @return The result of the conversion.
    183      */
    184     public static String getContentString(
    185         final byte[] data,
    186         int offset,
    187         int length,
    188         String charset
    189     ) {
    190
    191         if (data == null) {
    192             throw new IllegalArgumentException("Parameter may not be null");
    193         }
    194
    195         if ((charset == null) || (charset.equals(""))) {
    196             charset = DEFAULT_CONTENT_CHARSET;
    197         }
    198
    199         try {
    200             return new String(data, offset, length, charset);
    201         } catch (UnsupportedEncodingException e) {
    202
    203             if (LOG.isWarnEnabled()) {
    204                 LOG.warn("Unsupported encoding: " + charset + ". Default HTTP encoding used");
    205             }
    206
    207             try {
    208                 return new String(data, offset, length, DEFAULT_CONTENT_CHARSET);
    209             } catch (UnsupportedEncodingException e2) {
    210
    211                 if (LOG.isWarnEnabled()) {
    212                     LOG.warn("Unsupported encoding: "
    213                         + DEFAULT_CONTENT_CHARSET
    214                         + ". System encoding used");
    215                 }
    216
    217                 return new String(data, offset, length);
    218             }
    219         }
    220     }
    221
    222
    223     /**
    224      * Converts the byte array of HTTP content characters to a string This
    225      * method is to be used when decoding content of HTTP request/response If
    226      * the specified charset is not supported, default HTTP content encoding
    227      * (ISO-8859-1) is applied
    228      *
    229      * @param data the byte array to be encoded
    230      * @param charset the desired character encoding
    231      * @return The result of the conversion.
    232      */
    233     public static String getContentString(final byte[] data, String charset) {
    234         return getContentString(data, 0, data.length, charset);
    235     }
    236
    237     /**
    238      * Converts the specified string to a byte array of HTTP content characters
    239      * using default HTTP content encoding (ISO-8859-1) This method is to be
    240      * used when encoding content of HTTP request/response
    241      *
    242      * @param data the string to be encoded
    243      * @return The byte array as above.
    244      */
    245     public static byte[] getContentBytes(final String data) {
    246         return getContentBytes(data, null);
    247     }
    248
    249     /**
    250      * Converts the byte array of HTTP content characters to a string using
    251      * default HTTP content encoding (ISO-8859-1) This method is to be used when
    252      * decoding content of HTTP request/response
    253      *
    254      * @param data the byte array to be encoded
    255      * @param offset the index of the first byte to encode
    256      * @param length the number of bytes to encode
    257      * @return The string representation of the byte array.
    258      */
    259     public static String getContentString(final byte[] data, int offset, int length) {
    260         return getContentString(data, offset, length, null);
    261     }
    262
    263     /**
    264      * Converts the byte array of HTTP content characters to a string using
    265      * default HTTP content encoding (ISO-8859-1) This method is to be used when
    266      * decoding content of HTTP request/response
    267      *
    268      * @param data the byte array to be encoded
    269      * @return The string representation of the byte array.
    270      */
    271     public static String getContentString(final byte[] data) {
    272         return getContentString(data, null);
    273     }
    274
    275     /**
    276      * Converts the specified string to byte array of ASCII characters.
    277      *
    278      * @param data the string to be encoded
    279      * @return The string as a byte array.
    280      */
    281     public static byte[] getAsciiBytes(final String data) {
    282
    283         if (data == null) {
    284             throw new IllegalArgumentException("Parameter may not be null");
    285         }
    286
    287         try {
    288             return data.getBytes("US-ASCII");
    289         } catch (UnsupportedEncodingException e) {
    290             throw new RuntimeException("HttpClient requires ASCII support");
    291         }
    292     }
    293
    294     /**
    295      * Converts the byte array of ASCII characters to a string. This method is
    296      * to be used when decoding content of HTTP elements (such as response
    297      * headers)
    298      *
    299      * @param data the byte array to be encoded
    300      * @param offset the index of the first byte to encode
    301      * @param length the number of bytes to encode
    302      * @return The string representation of the byte array
    303      */
    304     public static String getAsciiString(final byte[] data, int offset, int length) {
    305
    306         if (data == null) {
    307             throw new IllegalArgumentException("Parameter may not be null");
    308         }
    309
    310         try {
    311             return new String(data, offset, length, "US-ASCII");
    312         } catch (UnsupportedEncodingException e) {
    313             throw new RuntimeException("HttpClient requires ASCII support");
    314         }
    315     }
    316
    317     /**
    318      * Converts the byte array of ASCII characters to a string. This method is
    319      * to be used when decoding content of HTTP elements (such as response
    320      * headers)
    321      *
    322      * @param data the byte array to be encoded
    323      * @return The string representation of the byte array
    324      */
    325     public static String getAsciiString(final byte[] data) {
    326         return getAsciiString(data, 0, data.length);
    327     }
    328 }