Android URL Create appendParameter(String url, String name, String value)

Here you can find the source of appendParameter(String url, String name, String value)

Description

append Parameter

License

Open Source License

Declaration

public static String appendParameter(String url, String name,
            String value) 

Method Source Code

//package com.java2s;
/*//from w w w  .j a v  a  2 s .  com
 * Copyright (C) 2010 Geometer Plus <contact@geometerplus.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 * 02110-1301, USA.
 */

public class Main {
    private static final char[] hexDigits = { '0', '1', '2', '3', '4', '5',
            '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };

    public static String appendParameter(String url, String name,
            String value) {
        if (name == null || value == null) {
            return url;
        }
        value = value.trim();
        if (value.length() == 0) {
            return url;
        }
        value = htmlEncode(value);
        int index = url.indexOf('?', url.lastIndexOf('/') + 1);
        char delimiter = (index == -1) ? '?' : '&';
        while (index != -1) {
            final int start = index + 1;
            final int eqIndex = url.indexOf('=', start);
            index = url.indexOf('&', start);
            if (eqIndex != -1 && url.substring(start, eqIndex).equals(name)) {
                final int end = (index != -1 ? index : url.length());
                if (url.substring(eqIndex + 1, end).equals(value)) {
                    return url;
                } else {
                    return new StringBuilder(url).replace(eqIndex + 1, end,
                            value).toString();
                }
            }
        }
        return new StringBuilder(url).append(delimiter).append(name)
                .append('=').append(value).toString();
    }

    public static String htmlEncode(String stringToEncode) {
        if (stringToEncode == null) {
            return null;
        }
        StringBuilder encodedString = new StringBuilder();
        for (int i = 0; i < stringToEncode.length(); ++i) {
            final char ch = stringToEncode.charAt(i);
            if (Character.isLetterOrDigit(ch) || (ch == '.') || (ch == '~')
                    || (ch == '-') || (ch == '_')) {
                encodedString.append(ch);
            } else {
                try {
                    byte[] bytes = String.valueOf(ch).getBytes("UTF-8");
                    for (byte b : bytes) {
                        encodedString.append('%').append(hexDigits[b / 16])
                                .append(hexDigits[b % 16]);
                    }
                } catch (java.io.UnsupportedEncodingException ex) {
                }
            }
        }
        return encodedString.toString();
    }
}

Related

  1. createUrl(final String rootUrl, final String indivisualHost, final String featurePath, final int index, List pairs)
  2. buildBodyParameterString( List> parameters)
  3. buildParameterString( List> parameters, String delimiter, boolean quote)
  4. buildUrlParameterString( List> parameters)
  5. appendParameter(String url, String name, String value)
  6. geoCoderUrlBuilder(double lat, double lng)
  7. makeUrl(String inBaseUrl, String inUrl)