Как использовать клиентскую платформу RESTEasy для отправки данных в POST

Я использую клиентскую платформу RESTEasy для вызова УСПОКОИТЕЛЬНОГО веб-сервиса. Вызов выполняется через POST и отправляет некоторые данные XML на сервер. Как я выполняю это?

Каково волшебное колдовство аннотаций для использования, чтобы заставить это произойти?

8
задан David Escandell 20 May 2010 в 21:20
поделиться

2 ответа

Я позаимствовал из этого примера: Создайте спокойную службу с помощью 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();  
0
ответ дан 5 December 2019 в 10:01
поделиться

Я думаю, что Дэвид имеет в виду 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();

Надеюсь, это поможет, Чарли

12
ответ дан 5 December 2019 в 10:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: