code: def get(self, url_path):
          
          request_url = "%s%s" % (self._url, quote(url_path.encode("utf_8")))
          response = self.session.get(request_url)
  
          if response.status_code == 200 and self.verbose:
              print "GET %s: Success." % request_url
          elif response.status_code >= 400:
              error_handler(JSSGetError, response)
  
          # requests GETs JSS data as XML encoded in utf-8, but
          # ElementTree.fromstring wants a string.
          jss_results = response.text.encode("utf-8")
          try:
              xmldata = ElementTree.fromstring(jss_results)
          except ElementTree.ParseError:
              raise JSSGetError("Error Parsing XML:\n%s" % jss_results)
  
          return xmldata
docs: GET a url, handle errors, and return an etree.
  
          In general, it is better to use a higher level interface for
          API requests, like the search methods on this class, or the
          JSSObjects themselves.
  
          Args:
              url_path: String API endpoint path to GET (e.g. "/packages")
  
          Returns:
              ElementTree.Element for the XML returned from the JSS.
  
          Raises:
              JSSGetError if provided url_path has a >= 400 response, for
              example, if an object queried for does not exist (404). Will
              also raise JSSGetError for bad XML.
  
              This behavior will change in the future for 404/Not Found
              to returning None.