code: @Override
      public int execute(HttpState state, HttpConnection conn)
          throws HttpException, IOException {
                  
          LOG.trace("enter HttpMethodBase.execute(HttpState, HttpConnection)");
  
          // this is our connection now, assign it to a local variable so 
          // that it can be released later
          this.responseConnection = conn;
  
          checkExecuteConditions(state, conn);
          this.statusLine = null;
          this.connectionCloseForced = false;
  
          conn.setLastResponseInputStream(null);
  
          // determine the effective protocol version
          if (this.effectiveVersion == null) {
              this.effectiveVersion = this.params.getVersion(); 
          }
  
          writeRequest(state, conn);
          this.requestSent = true;
          readResponse(state, conn);
          // the method has successfully executed
          used = true; 
  
          return statusLine.getStatusCode();
      }
docs: Executes this method using the specified <code>HttpConnection</code> and
  <code>HttpState</code>.
  
  @param state {@link HttpState state} information to associate with this
  request. Must be non-null.
  @param conn the {@link HttpConnection connection} to used to execute
  this HTTP method. Must be non-null.
  
  @return the integer status code if one was obtained, or <tt>-1</tt>
  
  @throws IOException if an I/O (transport) error occurs
  @throws HttpException  if a protocol exception occurs.