code: public static String getSignatureBaseString(String requestMethod, String requestUrl,
        Map<String, String> protocolParameters) throws AuthException {
      StringBuilder sb = new StringBuilder();
      sb.append(requestMethod.toUpperCase()).append("&")
          .append(AuthUtils.percentEncode(normalizeUrl(requestUrl))).append("&")
          .append(AuthUtils.percentEncode(normalizeParameters(requestUrl, protocolParameters)));
      return sb.toString();
    }
docs: Returns a signature base string. The signature base string
  is a consistent, reproducible concatenation of several of
  the HTTP request elements into a single string.
  
  The signature base string includes the following components of the HTTP request:
  <ul>
  <li>the HTTP request method (e.g., "GET", "POST", etc.)</li>
  <li>the authority as declared by the HTTP "Host" request header field</li>
  <li>the path and query components of the request resource URI</li>
  <li>the protocol parameters excluding the "oauth_signature"</li>
  <li>parameters included in the request entity-body if they comply with
  the strict restrictions defined in Section 3.4.1.3</li>
  </ul>
  
  NOTE 1: only 4 first parameter sources are used for now.
  NOTE 2: no percent encoding for custom HTTP methods for now.
  
  @see <a href="http://tools.ietf.org/html/rfc5849#section-3.4.1">3.4.1.
  Signature Base String</a>
  
  @param requestMethod request method
  @param requestUrl request url
  @param protocolParameters protocol parameters
  @return signature base string
  @throws AuthException if some of parameters has unacceptable value