HttpConstants.java
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 }