protected <T> T invoke(String url, String method, TypeReference<T> returnType, MultivaluedMap<String, String> formParams, Map<String, String> queryParams) throws IOException { url = url.replace("{repoOwner}", repoOwner).replace("{repoName}", repoName); ClientConfig configuration = new ClientConfig(); JerseyClient client = JerseyClientBuilder.createClient(configuration); client.register(auth); JerseyWebTarget target = client.target(url); if (queryParams != null) { for (String key : queryParams.keySet()) { target = target.queryParam(key, queryParams.get(key)); } } Response response = target.request("application/json").build(method, formParams != null ? Entity.form(formParams) : null).invoke(); //System.out.println("Status: " + response.getStatus()); String result = response.readEntity(String.class); //System.out.println("Result (string): " + result); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); return objectMapper.readValue(result, returnType); } }