首页 > 解决方案 > 为什么我的 REST 服务器中的响应状态为 204 No content?

问题描述

我是 REST API 的新手,通常使用服务器,我正在尝试制作一个简单的客户端-服务器应用程序。我正在使用泽西岛。

客户端向服务器发送一些数据,服务器接收数据并将其显示在所需的 uri 上,反之亦然。

接收托管在服务器上的数据的反之部分工作正常,但我无法将数据发送到服务器。

我试过这样的POST:

    @POST
    @Path("/something")
    @Consumes("application/x-www-form-urlencoded")
    public void getSomething(){

    }

我的客户端代码如下所示:

Client client = Client.create();
MultivaluedMap formData = new MultivaluedMapImpl();
        formData.add("name1", "val1");
        formData.add("name2", "val2");

        WebResource resource = client.resource("http://localhost:8080/artifact/rest/something");

        ClientResponse response = resource.type("application/x-www-form-urlencoded").post(ClientResponse.class, formData);

        System.out.println(response);

我正在尝试将字符串或 json 类型的对象发送到服务器,它应该在该 url 上显示它。但我不能这样做。

如果有人可以帮助我,我将不胜感激。

编辑 如果有人能告诉我如何使用这样的代码将数据发送到服务器,我也将不胜感激。

标签: javarestserverjersey

解决方案


getSomething没有返回任何东西。这转化为204 No Content响应:操作成功(2xx代码的 表明这一点)但没有任何返回。

如果要返回某些内容,请将返回类型从 更改voidResponse

@POST
@Path("/something")
@Consumes("application/x-www-form-urlencoded")
@Produces("text/plain")
public Response getSomething() {
  return Response.ok("Success!").build();
}

这将返回 HTTP 状态代码作为响应正文的内容200 OKSuccess!

但是您可能想以某种方式使用请求的内容。查看jax-rs 检索表单参数,了解如何执行此操作。


推荐阅读