如何从客户端Java调用PUT方法?

时间:2019-04-23 11:15:58

标签: java rest put jersey-client

我有以下方法:

@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 个答案:

答案 0 :(得分:1)

您不能在看跌期权中发送null,需要发送Entity

给出端点的以下定义:

@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());

这个opputputs:

id: 10
action: action
Status: 200