Вы также должны сообщить клиентской стороне, что она выполняет PUT из JSON. В противном случае он будет пытаться POST что-то неизвестного типа (подробные журналы сервера могут записать это с ошибкой), что совсем не то, что вы хотите. (Обработка исключений опущена.)
URI uri = new URI("the server address goes here");
HttpURLConnection conn = (HttpURLConnection) uri.toURL().openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("PUT");
conn.addRequestProperty("Content-Type", "application/json");
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
out.write(gson.toJson(newClient));
out.close();
// Check here that you succeeded!
На стороне сервера вы хотите объявить, что это @Consumes("application/json")
, конечно, и вы, вероятно, хотите, чтобы метод либо возвращал представление результата, либо перенаправлял на него (см. этот вопрос SO для обсуждения вопросов) поэтому результатом вашего метода должен быть не void
, а скорее тип значения или JAX-RS Response
(то есть, как сделать перенаправление).