Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
   * Copyright 2015-2015, Inc. or its affiliates. All Rights Reserved.
   * Licensed under the Apache License, Version 2.0 (the "License").
   * You may not use this file except in compliance with the License.
   * A copy of the License is located at
  * or in the "license" file accompanying this file. This file is distributed
  * express or implied. See the License for the specific language governing
  * permissions and limitations under the License.
 package com.amazonaws.util;
 import java.util.List;
 import java.util.Map;
 public class SdkHttpUtils {
     private static final String DEFAULT_ENCODING = "UTF-8";

Regex which matches any of the sequences that we need to fix up after URLEncoder.encode().
     private static final Pattern ENCODED_CHARACTERS_PATTERN;
     static {
         StringBuilder pattern = new StringBuilder();
          = Pattern.compile(pattern.toString());

Encode a string for use in the path of a URL; uses URLEncoder.encode, (which encodes a string for use in the query portion of a URL), then applies some postfilters to fix things up per the RFC. Can optionally handle strings which are meant to encode a path (ie include '/'es which should NOT be escaped).

value the value to encode
path true if the value is intended to represent a path
the encoded value
     public static String urlEncode(final String valuefinal boolean path) {
         if (value == null) {
             return "";
         try {
             String encoded = URLEncoder.encode(value);
             Matcher matcher = .matcher(encoded);
             StringBuffer buffer = new StringBuffer(encoded.length());
             while (matcher.find()) {
                 String replacement =;
                 if ("+".equals(replacement)) {
                     replacement = "%20";
                 } else if ("*".equals(replacement)) {
                     replacement = "%2A";
                 } else if ("%7E".equals(replacement)) {
                     replacement = "~";
                 } else if (path && "%2F".equals(replacement)) {
                     replacement = "/";
             return buffer.toString();
         } catch (UnsupportedEncodingException ex) {
             throw new RuntimeException(ex);

Returns true if the specified URI is using a non-standard port (i.e. any port other than 80 for HTTP URIs or any port other than 443 for HTTPS URIs).

True if the specified URI is using a non-standard port, otherwise false.
    public static boolean isUsingNonDefaultPort(URI uri) {
        String scheme = uri.getScheme().toLowerCase();
        int port = uri.getPort();
        if (port <= 0) return false;
        if (scheme.equals("http") && port == 80) return false;
        if (scheme.equals("https") && port == 443) return false;
        return true;
    public static boolean usePayloadForQueryParameters(SignableRequest<?> request) {
        boolean requestIsPOST = ..equals(request.getHttpMethod());
        boolean requestHasNoPayload = (request.getContent() == null);
        return requestIsPOST && requestHasNoPayload;

Creates an encoded query string from all the parameters in the specified request.

request The request containing the parameters to encode.
Null if no parameters were present, otherwise the encoded query string for the parameters present in the specified request.
    public static String encodeParameters(SignableRequest<?> request) {
        final Map<StringList<String>> requestParams = request.getParameters();
        if (requestParams.isEmpty()) return null;
        final List<NameValuePairnameValuePairs = new ArrayList<NameValuePair>();
        for (Entry<StringList<String>> entry : requestParams.entrySet()) {
            String parameterName = entry.getKey();
            for (String value : entry.getValue()) {
                    .add(new BasicNameValuePair(parameterNamevalue));
        return URLEncodedUtils.format(nameValuePairs);

Append the given path to the given baseUri. By default, all slash characters in path will not be url-encoded.
    public static String appendUri(String baseUriString path) {
        return appendUri(baseUripathfalse);

Append the given path to the given baseUri.

This method will encode the given path but not the given baseUri.

baseUri The URI to append to (required, may be relative)
path The path to append (may be null or empty)
escapeDoubleSlash Whether double-slash in the path should be escaped to "/%2F"
The baseUri with the (encoded) path appended
    public static String appendUri(final String baseUriString pathfinal boolean escapeDoubleSlash ) {
        String resultUri = baseUri;
        if (path != null && path.length() > 0) {
            if (path.startsWith("/")) {
                // trim the trailing slash in baseUri, since the path already starts with a slash
                if (resultUri.endsWith("/")) {
                    resultUri = resultUri.substring(0, resultUri.length() - 1);
            } else if (!resultUri.endsWith("/")) {
                resultUri += "/";
            String encodedPath = SdkHttpUtils.urlEncode(pathtrue);
            if (escapeDoubleSlash) {
                encodedPath = encodedPath.replace("//""/%2F");
            resultUri += encodedPath;
        } else if (!resultUri.endsWith("/")) {
            resultUri += "/";
        return resultUri;
New to GrepCode? Check out our FAQ X