Я использую клиентскую платформу RESTEasy для вызова УСПОКОИТЕЛЬНОГО веб-сервиса. Вызов выполняется через POST и отправляет некоторые данные XML на сервер. Как я выполняю это?
Каково волшебное колдовство аннотаций для использования, чтобы заставить это произойти?
Я позаимствовал из этого примера: Создайте спокойную службу с помощью RESTEasy следующий фрагмент кода, который, кажется, делает именно то, что вы хотите, не так ли?
URL url = new URL("http://localhost:8081/user");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/xml");
connection.setDoOutput(true);
connection.setInstanceFollowRedirects(false);
StringBuffer sbuffer = new StringBuffer();
sbuffer.append("<user id=\"0\">");
sbuffer.append(" <username>Test User</username>");
sbuffer.append(" <email>test.user@test.com</email>");
sbuffer.append("</user>");
OutputStream os = connection.getOutputStream();
os.write(sbuffer.toString().getBytes());
os.flush();
assertEquals(HttpURLConnection.HTTP_CREATED, connection.getResponseCode());
connection.disconnect();
Я думаю, что Дэвид имеет в виду RESTeasy "Client Framework". Поэтому ваш ответ (Riduidel) - это не совсем то, что он ищет. Ваше решение использует HttpUrlConnection в качестве http-клиента. Использование клиента resteasy вместо HttpUrlConnection или DefaultHttpClient выгодно, поскольку клиент resteasy поддерживает JAX-RS. Чтобы использовать клиент RESTeasy, вы создаете объекты org.jboss.resteasy.client.ClientRequest и формируете запросы, используя его конструкторы и методы. Ниже приведено, как я бы реализовал вопрос Дэвида, используя клиентский фреймворк от RESTeasy.
ClientRequest request = new ClientRequest("http://url/resource/{id}");
StringBuilder sb = new StringBuilder();
sb.append("<user id=\"0\">");
sb.append(" <username>Test User</username>");
sb.append(" <email>test.user@test.com</email>");
sb.append("</user>");
String xmltext = sb.toString();
request.accept("application/xml").pathParameter("id", 1).body( MediaType.APPLICATION_XML, xmltext);
String response = request.postTarget( String.class); //get response and automatically unmarshall to a string.
//or
ClientResponse<String> response = request.post();
Надеюсь, это поможет, Чарли