Construct and submit a structured/authenticated request.

        ## Arguments

        * `job_type` (str): The job type identifier to use.

        ## Keyword Arguments

        * `params` (dict): Any additional entries to include in the POST
          request.

        ## Returns

        * `r` (requests.Response): The response from the server.

def _send_request(self, job_type, params={}):
        """
        Construct and submit a structured/authenticated request.

        ## Arguments

        * `job_type` (str): The job type identifier to use.

        ## Keyword Arguments

        * `params` (dict): Any additional entries to include in the POST
          request.

        ## Returns

        * `r` (requests.Response): The response from the server.

        """
        params["wsid"] = params.get("wsid", self.userid)
        params["pw"]   = params.get("pw", self.password)

        path = os.path.join(self.base_url, job_type)
        if self.request_type == 'GET':
            r = requests.get(path, params=params)
        elif self.request_type == 'POST':
            r = requests.post(path, data=params)
        else:
            raise ValueError('`resest_type` is invalid!')

        code = r.status_code
        if code != 200:
            raise Exception("%s failed with status: %d"%(job_type, code))

        return r