<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _requests_post(self, url, json=None, data=None, username="", password="", xapikey="", headers=None, timeout=30):
 """This function will POST to the url endpoint using requests. Returning an AdyenResult object on 200 HTTP response. Either json or data has to be provided. If username and password are provided, basic auth will be used. Args: url (str):
 url to send the POST json (dict, optional):
 Dict of the JSON to POST data (dict, optional):
 Dict, presumed flat structure of key/value of request to place username (str, optionl):
 Username for basic auth. Must be included as part of password. password (str, optional):
 Password for basic auth. Must be included as part of username. headers (dict, optional):
 Key/Value pairs of headers to include timeout (int, optional):
 Default 30. Timeout for the request. Returns: str: Raw response received str: Raw request placed int: HTTP status code, eg 200,404,401 dict: Key/Value pairs of the headers received. """

        if headers is None:
            headers = {}

        # Adding basic auth if username and password provided.
        auth = None
        if username and password:
            auth = requests.auth.HTTPBasicAuth(username, password)
        elif xapikey:
            headers['x-api-key'] = xapikey

        # Add User-Agent header to request so that the request
        # can be identified as coming from the Adyen Python library.
        headers['User-Agent'] = self.user_agent

        request = requests.post(url, auth=auth, data=data, json=json,
                                headers=headers, timeout=timeout)

        # Ensure either json or data is returned for raw request
        # Updated: Only return regular dict,
        # don't switch out formats if this is not important.
        message = json

        return request.text, message, request.status_code, request.headers