2016-09-01 3 views
2

Мне нужно создать Http-клиент для тестирования веб-службы REST с API-интерфейсом клиента JAXRS (lib: javax.ws.rs.client. *), Предоставленной WLP , Мне нужно отправить запрос String (сообщение JSON) с помощью метода POST и получить ответ строки (сообщение JSON). Я буду признателен, если у кого-то есть аналогичный Java-код (класс) и необходимый импорт для выполнения этой задачи.Клиент Http с использованием API клиента JAXRS (запрос POST) в профиле Websphere Liberty

PS: Я начал кодирования класса Java, но я не знаю, как получить ответ:

Client client = ClientBuilder.newClient(); 
WebTarget myResource = client.target("http://example.com/webapi"); 
.... 

Я использую:

Websphere Liberty profile 16.0.0.2, 
jaxrs-2.0 [1.0.0] 
jaxrsClient-2.0 [1.0.0] 
IDE : RDz 

ответ

3

Вы почти там. Все, что вам нужно сделать, это форматировать ваши данные запроса в экземпляр «Entity» и отправить его на службу.

Ниже приведен пример кода, который делает это для очень простой службы JAX-RS.

import javax.ws.rs.client.Client; 
    import javax.ws.rs.client.ClientBuilder; 
    import javax.ws.rs.client.Entity; 
    import javax.ws.rs.client.WebTarget; 
    import javax.ws.rs.core.MediaType; 

    .... 

    // Set up our client and target our JAX-RS service 
    Client client = ClientBuilder.newClient(); 
    WebTarget target = client.target("http://localhost:9081/example.jaxrs/test/SimpleService"); 

    // Build our request JSON into an 'Entity'. Replace 'myData' with your JSON 
    Entity<String> data = Entity.entity("MyData", MediaType.APPLICATION_JSON_TYPE); 

    // Then send a post request to the target service 
    String result = target.request(MediaType.APPLICATION_JSON_TYPE).post(data, String.class); 
+0

Здравствуйте Михаил, спасибо за ответ, но я до сих пор ПРЕДУПРЕЖДЕНИЕ и ошибки: [ПРЕДУПРЕЖДЕНИЕ] HTTP-код ответа, как представляется, быть поврежден [ВНИМАНИЕ] перехватчик для {HTTP: //9.458.365.147:11491/webservice}WebClient исключил исключение, сейчас разматывается Не удалось отправить сообщение. –

+0

Это работает! Большое спасибо. –

0

Попробуйте следующее,

import javax.ws.rs.client.Client; 
import javax.ws.rs.client.ClientBuilder; 
import javax.ws.rs.client.Invocation; 
import javax.ws.rs.client.WebTarget; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 

Client client = ClientBuilder.newClient(); 
WebTarget myResource = client.target("http://example.com/webapi"); 
Invocation.Builder invocationBuilder = myResource.request(MediaType.TEXT_PLAIN_TYPE); 
Response getResponse = invocationBuilder.get(); 
if (getResponse != null && getResponse.getStatus() == 200) { 
    String responseString = getResponse.readEntity(String.class); 
} 
Смежные вопросы