docs: @Override
      protected RequestEntity generateRequestEntity() {
          if (!this.params.isEmpty()) {
              // Use a ByteArrayRequestEntity instead of a StringRequestEntity.
              // This is to avoid potential encoding issues.  Form url encoded strings
              // are ASCII by definition but the content type may not be.  Treating the content
              // as bytes allows us to keep the current charset without worrying about how
              // this charset will effect the encoding of the form url encoded string.
              String content = EncodingUtil.formUrlEncode(getParameters(), getRequestCharSet());
              ByteArrayRequestEntity entity = new ByteArrayRequestEntity(
                  EncodingUtil.getAsciiBytes(content),
                  FORM_URL_ENCODED_CONTENT_TYPE
              );
              return entity;
          }
          return super.generateRequestEntity();
      }