def Request(self, url, method=None, post=None):
        # kludge: necessary to get around urllib2 limitations: Need this to get
        # the exact request that was sent.
        global raw_request
        url = str(url)

        raw_request = []  # Init Raw Request to blank list.
        post = self.DerivePOST(post)
        method = DeriveHTTPMethod(method, post)
        url = url.strip()  # Clean up URL.
        request = urllib2.Request(url, post, self.Headers)  # GET request.
        if method is not None:
            # kludge: necessary to do anything other that GET or POST with
            # urllib2
            request.get_method = lambda : method
        # MUST create a new Transaction object each time so that lists of
        # transactions can be created and process at plugin-level
        # Pass the timer object to avoid instantiating each time.
        self.http_transaction = transaction.HTTP_Transaction(self.timer)
        self.http_transaction.Start(
            url,
            post,
            method,
            self.target.IsInScopeURL(url))
        self.RequestCountTotal += 1
        try:
            response = self.perform_request(request)
            self.set_succesful_transaction(raw_request, response)
        except urllib2.HTTPError, Error:  # page NOT found.
            # Error is really a response for anything other than 200 OK in
            # urllib2 :)
            self.http_transaction.SetTransaction(False, raw_request[0], Error)
        except urllib2.URLError, Error:  # Connection refused?
            err_message = self.ProcessHTTPErrorCode(Error, url)
            self.http_transaction.SetError(err_message)
        except __HOLE__:
            err_message = "ERROR: Requester Object -> Unknown HTTP " \
                           "Request error: " + url + "\n" + str(sys.exc_info())
            self.http_transaction.SetError(err_message)
        if self.LogTransactions:
            # Log transaction in DB for analysis later and return modified
            # Transaction with ID.
            self.log_transaction()
        return self.http_transaction
dataset/ETHPy150Open owtf/owtf/framework/http/requester.py/Requester.Request