def _create_request(self, verb, url, query_params=None, data=None, send_as_file=False):
        """Helper method to create a single post/get requests.

        Args:
            verb - MultiRequest._VERB_POST or MultiRequest._VERB_GET
            url - A string URL
            query_params - None or a dict
            data - None or a string or a dict
            send_as_file - A boolean, should the data be sent as a file.
        Returns:
            requests.PreparedRequest
        Raises:
            InvalidRequestError - if an invalid verb is passed in.
        """

        # Prepare a set of kwargs to make it easier to avoid missing default params.
        kwargs = {
            'headers': self._default_headers,
            'params': query_params,
            'timeout': self._req_timeout,
        }

        if MultiRequest._VERB_POST == verb:
            if send_as_file:
                kwargs['files'] = {'file': data}
            else:
                kwargs['data'] = data
            return PreparedRequest(partial(self._session.post, url, **kwargs), url)
        elif MultiRequest._VERB_GET == verb:
            return PreparedRequest(partial(self._session.get, url, **kwargs), url)
        else:
            raise InvalidRequestError('Invalid verb {0}'.format(verb))