code: protected <T> Optional<T> executeGetRequest(URI uri, Map<String, Object> headers, 
          List<String> queryParams, GenericType<T> returnType)
      {
          WebTarget target = this.client.target(uri);
          target = applyQueryParams(target, queryParams);
          Invocation.Builder invocation = target.request(MediaType.APPLICATION_JSON);
          applyHeaders(invocation, headers);
          Response response = invocation.get();
          handleResponseError("GET", uri, response);
          logResponse(uri, response);
          return extractEntityFromResponse(response, returnType);
      }
docs: Execute a GET request and return the result.
  @param <T> The type parameter used for the return object
  @param uri The URI to call
  @param returnType The type to marshall the result back into
  @param headers A set of headers to add to the request
  @param queryParams A set of query parameters to add to the request
  @return The return type