Rest服务获取输入参数的空值

时间:2016-02-07 19:39:45

标签: java rest jax-rs websphere-liberty

从SOAP UI调用时,rest服务获取正确的值。但是当从HttpClient调用时获取空值。

休息服务:

Capabilities

java Http客户端:

@Path("/example")
public class TestService {

@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.TEXT_PLAIN)
public Response postXML(@QueryParam("target") String target,@QueryParam("body") String body) {
    System.out.println("Target: " + target);
    System.out.println("Message: " + body);
    return Response.ok("Sucess").build();
}

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.TEXT_PLAIN)
public Response postJSON(@QueryParam("target") String target,@QueryParam("body") String body) {
    System.out.println("Target: " + target);
    System.out.println("Message: " + body);
    return Response.ok("Sucess").build();
}   

我尝试使用StringEntity和MultipartEntityBuilder。结果相同。

由于 马杜

2 个答案:

答案 0 :(得分:0)

使用@QueryParam时,参数必须是HTTP查询参数(即URL的一部分)。

但是您将数据作为HTTP请求有效负载发送,因此您会收到null变量targetbody

答案 1 :(得分:0)

如果您希望能够发布此数据(如在httpclient情况下)而不是在查询字符串中传递它,那么您将在端点中使用@Consumes和未注释的参数:

@Consumes("application/x-www-form-urlencoded")
public String doPost2(FormURLEncodedProperties formData) {

在EE6教程中查找@Consumes:

  

https://docs.oracle.com/cd/E19798-01/821-1841/giepu/index.html