def _SimianRequest(
      self, method, url, body=None, headers=None, output_filename=None,
      full_response=False):
    """Make a request and return the body if successful.

    Args:
      method: str, HTTP method to use, like GET or POST.
      url: str, url to connect to, like '/foo/1'
      body: str or file or dict, optional, body of request
      headers: optional dict headers to send with the request.
      output_filename: str, optional, filename to write response body to
      full_response: bool, default False, return response object
    Returns:
      if output_filename is not supplied:
        if full_response is True:
          Response instance
        else:
          str, body received over http
      otherwise:
        None
    Raises
      SimianServerError: if the Simian server returned an error (status != 200)
    """
    try:
      response = self.Do(
          method, url, body=body, headers=headers,
          output_filename=output_filename)
    except __HOLE__, e:
      raise SimianServerError(str(e))

    if response.IsSuccess():
      if not full_response:
        return response.body
      else:
        return response
    else:
      raise SimianServerError(response.status, response.reason, response.body)
dataset/ETHPy150Open google/simian/src/simian/client/client.py/SimianClient._SimianRequest