code: public java.lang.StringBuffer getRequestURL()
      {
          if (WCCustomProperties.CHECK_REQUEST_OBJECT_IN_USE){
              checkRequestObjectInUse();
          }
          StringBuffer fullURL = new StringBuffer();
  
          // get the scheme and port up front for later use
          String scheme = getScheme();
          int port = getServerPort();
  
          // append the scheme and server name
          fullURL.append(scheme);
          fullURL.append("://");
          fullURL.append(getServerName());
  
          // append the port if not the default one for the scheme
          if ((scheme.equals("http") && port != 80) || (scheme.equals("https") && port != 443))
          {
              fullURL.append(':');
              fullURL.append(getServerPort());
          }
  
          // append the uri
          // PK22688 start
          // fullURL.append(getRequestURI());
          fullURL.append(getEncodedRequestURI());
          // PK22688 end
  
          // 321485
          if (TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)) {  //306998.15
              logger.logp(Level.FINE, CLASS_NAME,"getRequestURL", "url --> " + fullURL);
          }
  
          return fullURL;
      }
docs: Reconstructs the URL the client used to make the request.  The returned URL contains
  a protocol, server name, port number, and server path, but it does not include query
  string parameters.
  
  Because this method returns a StringBuffer, not a string, you can modify the URL
  easily, for example, to append query parameters.
  
  This method is useful for creating redirect messages and for reporting errors.
  
  @return a StringBuffer object containing the reconstructed URL
  
  @since Servlet 2.3