Как вызвать метод PUT из клиентской Java? - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть метод ниже:

@PUT
@Path("/reduceEnergy/{id}/{action}")
String reduceEnergyConsumption(@PathParam("id") int id, 
                               @PathParam("action") String action);

Я хочу вызвать этот метод от клиента.(В случае, когда у меня есть метод GET, я написал так:

String response = target.path("air_quality")
                        .path("reduceEnergy/"+action)
                        .request()
                        .accept(MediaType.TEXT_PLAIN)
                        .get(String.class);
System.out.println(response);

Но теперь у меня есть метод PUT. Я написал так:

Но я не знаюкак завершить или исправить это

Response response = target.path("aqsensor")
                          .path("reduceEnergy/"+pr+"/"+action)
                          .request()
                          .accept(MediaType.TEXT_PLAIN)
                          .put(null);
System.out.println(response.getStatus());

Спасибо за помощь в поиске решения.

1 Ответ

1 голос
/ 23 апреля 2019

Вы не можете отправить null в оферте, вам нужно отправить Сущность

С учетом следующего определения конечной точки:

@Path("myresource")
public class MyResource {

    @PUT
    @Path("/reduceEnergy/{id}/{action}")
    public String reduceEnergyConsumption(@PathParam("id") int id, 
                                          @PathParam("action") String action) {
        System.out.println("id: " + id);
        System.out.println("action: " + action);
        return "";
    }
}

Вы можете сделать это так:

Entity<String> userEntity = Entity.entity("", MediaType.TEXT_PLAIN);

Response response = target.path("myresource/reduceEnergy/10/action")
                          .request()
                          .put(userEntity);

System.out.println("Status: " + response.getStatus());

Этот вывод:

id: 10
action: action
Status: 200
...