diff options
Diffstat (limited to 'src/org/apache/http/client/utils/URLEncodedUtils.java')
-rw-r--r-- | src/org/apache/http/client/utils/URLEncodedUtils.java | 191 |
1 files changed, 0 insertions, 191 deletions
diff --git a/src/org/apache/http/client/utils/URLEncodedUtils.java b/src/org/apache/http/client/utils/URLEncodedUtils.java deleted file mode 100644 index 8b08f90..0000000 --- a/src/org/apache/http/client/utils/URLEncodedUtils.java +++ /dev/null @@ -1,191 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/utils/URLEncodedUtils.java $ - * $Revision: 655107 $ - * $Date: 2008-05-10 08:20:42 -0700 (Sat, 10 May 2008) $ - * ==================================================================== - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * <http://www.apache.org/>. - * - */ - -package org.apache.http.client.utils; - -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URI; -import java.net.URLDecoder; -import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Scanner; -import org.apache.http.Header; -import org.apache.http.HttpEntity; -import org.apache.http.NameValuePair; -import org.apache.http.message.BasicNameValuePair; -import org.apache.http.protocol.HTTP; -import org.apache.http.util.EntityUtils; - -/** - * A collection of utilities for encoding URLs. - */ -public class URLEncodedUtils { - - public static final String CONTENT_TYPE = "application/x-www-form-urlencoded"; - private static final String PARAMETER_SEPARATOR = "&"; - private static final String NAME_VALUE_SEPARATOR = "="; - - /** - * Returns a list of {@link NameValuePair NameValuePairs} as built from the - * URI's query portion. For example, a URI of - * http://example.org/path/to/file?a=1&b=2&c=3 would return a list of three - * NameValuePairs, one for a=1, one for b=2, and one for c=3. - * <p> - * This is typically useful while parsing an HTTP PUT. - * - * @param uri - * uri to parse - * @param encoding - * encoding to use while parsing the query - */ - public static List <NameValuePair> parse (final URI uri, final String encoding) { - List <NameValuePair> result = Collections.emptyList(); - final String query = uri.getRawQuery(); - if (query != null && query.length() > 0) { - result = new ArrayList <NameValuePair>(); - parse(result, new Scanner(query), encoding); - } - return result; - } - - /** - * Returns a list of {@link NameValuePair NameValuePairs} as parsed from an - * {@link HttpEntity}. The encoding is taken from the entity's - * Content-Encoding header. - * <p> - * This is typically used while parsing an HTTP POST. - * - * @param entity - * The entity to parse - * @throws IOException - * If there was an exception getting the entity's data. - */ - public static List <NameValuePair> parse ( - final HttpEntity entity) throws IOException { - List <NameValuePair> result = Collections.emptyList(); - if (isEncoded(entity)) { - final String content = EntityUtils.toString(entity); - final Header encoding = entity.getContentEncoding(); - if (content != null && content.length() > 0) { - result = new ArrayList <NameValuePair>(); - parse(result, new Scanner(content), - encoding != null ? encoding.getValue() : null); - } - } - return result; - } - - /** - * Returns true if the entity's Content-Type header is - * <code>application/x-www-form-urlencoded</code>. - */ - public static boolean isEncoded (final HttpEntity entity) { - final Header contentType = entity.getContentType(); - return (contentType != null && contentType.getValue().equalsIgnoreCase(CONTENT_TYPE)); - } - - /** - * Adds all parameters within the Scanner to the list of - * <code>parameters</code>, as encoded by <code>encoding</code>. For - * example, a scanner containing the string <code>a=1&b=2&c=3</code> would - * add the {@link NameValuePair NameValuePairs} a=1, b=2, and c=3 to the - * list of parameters. - * - * @param parameters - * List to add parameters to. - * @param scanner - * Input that contains the parameters to parse. - * @param encoding - * Encoding to use when decoding the parameters. - */ - public static void parse ( - final List <NameValuePair> parameters, - final Scanner scanner, - final String encoding) { - scanner.useDelimiter(PARAMETER_SEPARATOR); - while (scanner.hasNext()) { - final String[] nameValue = scanner.next().split(NAME_VALUE_SEPARATOR); - if (nameValue.length == 0 || nameValue.length > 2) - throw new IllegalArgumentException("bad parameter"); - - final String name = decode(nameValue[0], encoding); - String value = null; - if (nameValue.length == 2) - value = decode(nameValue[1], encoding); - parameters.add(new BasicNameValuePair(name, value)); - } - } - - /** - * Returns a String that is suitable for use as an <code>application/x-www-form-urlencoded</code> - * list of parameters in an HTTP PUT or HTTP POST. - * - * @param parameters The parameters to include. - * @param encoding The encoding to use. - */ - public static String format ( - final List <? extends NameValuePair> parameters, - final String encoding) { - final StringBuilder result = new StringBuilder(); - for (final NameValuePair parameter : parameters) { - final String encodedName = encode(parameter.getName(), encoding); - final String value = parameter.getValue(); - final String encodedValue = value != null ? encode(value, encoding) : ""; - if (result.length() > 0) - result.append(PARAMETER_SEPARATOR); - result.append(encodedName); - result.append(NAME_VALUE_SEPARATOR); - result.append(encodedValue); - } - return result.toString(); - } - - private static String decode (final String content, final String encoding) { - try { - return URLDecoder.decode(content, - encoding != null ? encoding : HTTP.DEFAULT_CONTENT_CHARSET); - } catch (UnsupportedEncodingException problem) { - throw new IllegalArgumentException(problem); - } - } - - private static String encode (final String content, final String encoding) { - try { - return URLEncoder.encode(content, - encoding != null ? encoding : HTTP.DEFAULT_CONTENT_CHARSET); - } catch (UnsupportedEncodingException problem) { - throw new IllegalArgumentException(problem); - } - } - -} |