我是REST API的新手,通常与服务器一起使用,我正在尝试制作一个简单的客户端-服务器应用程序。我正在使用泽西岛。
客户端向服务器发送一些数据,服务器接收数据并将其显示在所需的uri上,反之亦然。
反之亦然,接收服务器上托管的数据可以正常工作,但是我无法将数据发送到服务器。
我尝试过这样的POST:
HomerSearch
我的客户端代码看起来像这样:
@POST
@Path("/something")
@Consumes("application/x-www-form-urlencoded")
public void getSomething(){
}
我正在尝试将字符串或json类型的对象发送到服务器,并且应该在该url上显示它。但是我不能这样做。
如果有人可以帮助我,我将不胜感激。
修改 如果有人可以告诉我如何使用这样的代码将数据发送到服务器,我也将不胜感激。
答案 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的操作方法。