code: @Override
      public void setRequestURI(byte[] uri) {
  
          if (null == uri || 0 == uri.length) {
              throw new IllegalArgumentException("setRequestURI: null input");
          }
          super.setFirstLineChanged();
  
          if ('*' == uri[0]) {
              // URI of "*" can only be one character long to be valid
              if (1 != uri.length && '?' != uri[1]) {
                  String value = GenericUtils.getEnglishString(uri);
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                      Tr.debug(tc, "setRequestURI: invalid uri [" + value + "]");
                  }
                  throw new IllegalArgumentException("Invalid uri: " + value);
              }
          } else if ('/' != uri[0]) {
              String value = GenericUtils.getEnglishString(uri);
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "setRequestURI: invalid uri [" + value + "]");
              }
              throw new IllegalArgumentException("Invalid uri: " + value);
          }
  
          initScheme();
          this.myURIString = null;
          this.sUrlHost = null;
          this.iUrlPort = HeaderStorage.NOTSET;
          this.myQueryBytes = null;
          this.queryParams = null;
          parseURI(uri, 0);
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              Tr.debug(tc, "setRequestURI: set URI to " + getRequestURI());
          }
      }
docs: Allow the user to set the URI in the HttpRequest to the given
  byte array, prior to sending the request.
  
  @param uri