为什么我的REST服务器的响应状态为204 No content?

时间:2019-03-19 05:02:13

标签: java rest server jersey

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

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

反之亦然,接收服务器上托管的数据可以正常工作,但是我无法将数据发送到服务器。

我尝试过这样的POST:

HomerSearch

我的客户端代码看起来像这样:

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

    }

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

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

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

2 个答案:

答案 0 :(得分:0)

请尝试在jersey服务器端使用此格式,尽管您所使用的相同:

@POST
@Path("your path")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)

对于客户端,请尝试使用此功能。

    CloseableHttpClient httpClient = HttpClientBuilder.create().build();
    HttpPost post = new HttpPost(url + "/rest/something");
    post.addHeader("Accept" , "application/json");
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("name1", "val1"));
    params.add(new BasicNameValuePair("name2", "val2"));
    post.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
    HttpResponse response = httpClient.execute(post);
    String out = EntityUtils.toString(response.getEntity());

答案 1 :(得分:0)

您的getSomething未返回任何内容。转换为204 No Content响应:操作成功(代码的2xx指示了这一点),但是没有任何返回值。

如果您想退货,请将退货类型从void更改为Response

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

这将返回HTTP状态代码200 OK,其中Success!作为响应正文的内容。

但是您可能想以某种方式使用请求的内容。看一下jax-rs retrieve form parameters的操作方法。